命名管道/匿名管道

命名管道/匿名管道:

“有名字”则可以通过“名字”打开相同的管道进行通信,没有名字(在内核中没有明确标识)只能通过:
#子进程复制父进程的方式实现通信,复制了文件描述符

#匿名管道只能用于具有亲缘关系的进程间通信。只要在创建进程之前创建管道,后边的进程都可以实现通信。

#命名管道可用于同一主机任意进程间通信

管道原理:

操作系统在内核提供的一块缓冲区(只要进程能够访问到这块缓冲区就可以实现通信)
创建管道时,操作系统会提供两个操作句柄(文件描述符),其中一个用于从管道读取数据,一个向管道写入数据
子进程通过复制父进程的方式,获取到管道的操作句柄,进而实现访问同一个管道通信

匿名管道:

内核中的缓冲区没有明确标识符,其他进程无法直接访问管道,匿名管道只能用于具有亲缘关系的进程间通信,因为匿名管道在创建的时候操作系统返回了两个句柄,因此只能通过创建子进程,子进程复制父进程的方式获取到这个管道的操作句柄,进而访问同一块缓冲区。
int pipe(int pipefd[2]);
创建一个匿名管道,向用户通过参数pipefd返回管道的操作句柄。
ipc :进程间通信
pipefd[0]:管道的读取端
pipefd[1]:管道的写入端
有两个元素的数组就是两个操作句柄
返回值:0成功 -1失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值