一、概述
进程间通信(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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。