管道(问题理解)
管道是linux系统最常见的进程间通信方式之一,它在两个进程之间实现一个数据流通的通道,数据以一种数据流的方式在进程间流动。它把一个程序的输出直接连到另一个程序的输入。
解决方案
管道可以分为以下两种,利用这两种管道可以实现进程间的通信,但是对于进程间的关系会有所限制
解决和代码方法如下,数据以字符为例,通信的内容为姓名和学号。
管道分类
(一)无名管道
无名管道属于linux中管道通信的一种原始方法
特点
(1)它只能用于具有亲缘关系的进程之间的通信(即父子进程或兄弟进程之间)
(2)它是一个半双工的通信模式,具有固定的读端和写端
(3)管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()和write()函数。但是它不是普通的文件,不属于其他任何文件系统,并且只存在于内存中。
实现
代码如上图,fd[0]表示读端,fd[1]表示写端,我们fork()一个子进程,在父进程中将管道的读端关闭,利用write函数写入一串字符后使用wait函数让父进程等待,在子进程中关闭管道的写端&