利用管道实现多进程间通信

管道(问题理解)

管道是linux系统最常见的进程间通信方式之一,它在两个进程之间实现一个数据流通的通道,数据以一种数据流的方式在进程间流动。它把一个程序的输出直接连到另一个程序的输入。

解决方案

管道可以分为以下两种,利用这两种管道可以实现进程间的通信,但是对于进程间的关系会有所限制
解决和代码方法如下,数据以字符为例,通信的内容为姓名和学号。

管道分类

(一)无名管道

无名管道属于linux中管道通信的一种原始方法

特点

(1)它只能用于具有亲缘关系的进程之间的通信(即父子进程或兄弟进程之间)
(2)它是一个半双工的通信模式,具有固定的读端和写端
(3)管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()和write()函数。但是它不是普通的文件,不属于其他任何文件系统,并且只存在于内存中。

实现

在这里插入图片描述代码如上图,fd[0]表示读端,fd[1]表示写端,我们fork()一个子进程,在父进程中将管道的读端关闭,利用write函数写入一串字符后使用wait函数让父进程等待,在子进程中关闭管道的写端&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值