匿名管道通信
匿名管道
- 管道也叫无名(匿名)管道,它是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX系统都支持这种通信机制。
- 统计一个目录中文件的数目命令:ls | wc -l。为了执行该命令,shell创建了两个进程来分别执行ls和wc。
- 上述 | 称之为管道符,会将ls得到的结果通过管道传输给wc进程。
管道特点
- 管道是在内核内存中维护的缓冲器,这个缓冲器的存储能力是有限的,不同的操作系统大小不一定相同
- 管道拥有文件的特征:读操作和写操作。匿名管道没有文件实体,有名管道有文件实体。
- 一个管道是一个字节流,使用管道时不存在消息或消息边界的概念,从管道读取数据的进程可以读取任意大小的数据块,而不管写入进程写入管道的数据块的大小是多少。
- 通过管道传递的数据时顺序的,从管道中读取出来的字节顺序和写入进去的字节顺序是一样的。
- 管道时半双工的,一端用于写入,一段用于读取
- 从管道中读数据是一次性操作,数据一旦被读走,他就从管道中抛弃,释放空间以便写入更多的数据。
- 匿名管道只能在具有公共祖先的进程之间使用。