管道
- 什么是管道?
一个进程连接到另一个进程的一个数据流称为一个“管道”。
匿名管道pipe
- 用于父子间的通信
- 管道最大64K,由环形队列组成
- 需要占用两个文件描述符,分别作为管道读端、写端
- 管道是半双工的,需要确定通信方向
父写子读,关闭父读、子写
子写父读,关闭子读、父写 - 优点:稳定、经典
pipe函数原型
头文件:<unistd.h>
int pipe(int file_descriptor[2]);
功 能:创建一无名管道
参 数:file_descriptor:文件描述符数组,其中file_descriptor[0]表示读端,file_descriptor[1]表示写端
返回值:成功返回0,失败返回-1
开辟了管道之后如何实现两个进程间的通信呢?比如可以按下面的步骤通信。
1、父进程调用pipe开辟管道,得到两个文件描述符指向管道的两端。
2、父进程调用fork创建子进程,那么子进程也有两个文件描述符指向同一管道。
3、父进程关闭管道读端,子进程关闭管道写端。父进程可以往管道里写,子进程可以从
4、管道里读,管