概述
管道也叫无名管道,它是UNIX系统IPC(进程间通信)的最古老形式,所有的UNIX系统都支持这种通信机制
特点
双半工,数据在同一时刻只能在一个方向上流动
数据只能从管道一端写入,从另一端读出
写入管道中的数据遵循先入先出的规则
管道所传送的数据是无格式的,这要求管道的读出方与写入方要事先约定好数据格式,如多少字节算一个消息等
管道不是普通文件,不属于某个文件系统,只存在于内存中
管道在内存中对应一个缓冲区,不同的系统大小不一定相同
管道读数据是一次性操作,数据一旦被读走,它就从管道中被抛弃,释放空间以便写入更多数据
管道没有名字,只能在具有公共祖先的进程(父进程与子进程,或两个兄弟进程,具有亲缘关系)之间使用
管道是一种特殊的文件,在应用层体现为两个打开的文件描述符
![cb2fa8fb05dc06457683ef951e5f88de.png](https://i-blog.csdnimg.cn/blog_migrate/8cee904dddbb4ed05ebb1971386cd46a.jpeg)
pipe 函数
#include<unistd.h>
int pipe(int pipefd[2]);
// 功能 创建无名管道
// 参数 pipefd[2] int 类型数组 用来存放管道文件描述符
// 当一个管道建立时,会创建两个文件描述符 fd[0] 和 fd[1]。 其中 fd[