四、进程间通信(IPC)
作者:互联网
一、概述
进程间通信(IPC)主要包括以下内容:
- 数据传输。
- 资源共享。
- 事件通知。
- 进程控制
linux系统下的ipc:
- 管道:包括有名管道和无名管道。
- 信号
- FIFO
- 消息队列
- 信号量
- 共享内存。
二、进程间通信的方式
1、无名管道
用于具有亲缘关系的进程间通信(常见的就是父子进程),数据只能单向流动。
(1)创建管道
#include<unistd.h>
int pipe(int pipefd[2]);
参数:
- pipefd[2]:参数为两个文件描述符,一个读文件描述符,一个写文件描述符。
返回值:
- 成功返回0
- 失败返回-1,且errno错误码被设置。
(2)特点:
-
特殊文件(没有名字),无法使用open,但是可以使用close.
-
只能通过子进程继承文件描述符的形式来使用。
-
write和read操作可能会zuse进程。
-
所有文件描述符被关闭之后,无名管道被销毁。
(3)使用步骤
-
父进程pipe无名管道
-
fork子进程。
-
close无用端口。
-
write/read读写端口。
-
close读写端口。
标签:IPC,文件,管道,间通信,描述符,进程,close 来源: https://www.cnblogs.com/yuanqiangfei/p/16194955.html