进程间通信(ipc)
- 数据传输
- 资源共享
- 事件通知
- 进程控制
Linux系统下的ipc
- 早期unix系统ipc
- 管道
- 信号
- fifo
- system-v ipc(贝尔实验室)
- system-v 消息队列
- system-v 信号量
- system-v 共享内存
- socket ipc(BSD)
- posix ipc(IEEE)
- posix 消息队列
- posix 信号量
- posix 共享内存
无名管道
pipe函数
头文件:
#include <unistd.h>
函数原型:
int pipe(int pipefd[2]);
返回值:
成功:0
失败:-1
特点
- 特殊文件(没有文件),无法使用open,但是可以使用close
- 只能通过子进程继承文件描述符的形式来使用
- write和read操作可能会阻塞进程
- 所有文件描述符被关闭后,无名管道被销毁
使用步骤
- 父进程pipe无名管道
- fork子进程
- close无用端口
- write/read读写端口
- close读写端口
以下为测试无名管道代码:
执行结果: