简述Linux进程间通讯之管道pipe(上)

  本文主要简述管道的相关概念、原理、特质、局限性以及分析管道的通讯步骤及原理.函数

1、概念

  管道是一种最基本的IPC机制,做用于有血缘关系的进程之间,经过使用pipe函数在内核中开辟一段缓冲区来实现两个进程之间的通讯.继承

2、原理

  管道实为内核使用环形队列机制,借助内核缓冲区(4K)实现,是一个典型的生产者-消费者模型.生命周期

3、特质

  1.管道其本质是一个伪文件(实为内存缓冲区),所以具备IO的特性,其生命周期随进程.队列

  2.管道由两个文件描述符引用,一个表示读端,一个表示写端.进程

  3.管道规定数据从写端流入,从读端流出.ip

  4.管道的属于字节流传输,须要内存

4、局限性

  1.数据不能本身读,本身写.pip

  2.数据一旦被读走,便不会在管道中存在,不可反复读取.原理

  3.管道采用半双工通讯方式,所以,数据只能在一个方向上流动.引用

  4.只有在有公共祖先的进程间使用管道.

5、通讯步骤及原理

  1.父进程使用pipe函数建立一个管道.

  当父进程使用pipe函数时,至关于此时打开了两个文件,fd[0](只读方式)和fd[1](只写方式),fd[0]和fd[1]都在文件的描述符表中.

  2.父进程经过fork函数建立出子进程.

  当父进程fork出子进程时,子进程会继承父进程的文件描述符表,所以子进程也能看到

  3.父进程关闭读端fd[0],子进程关闭写端fd[1].

  4.以文件方式进行通讯.

  至于具体的代码,请关注下篇文章.

相关文章
相关标签/搜索