fork()函数:创建父子进程
mkfifo函数: 创建管道文件
通过父子进程实现有名管道之间的双向通信。
具体实现:由一方父进程发送信号,另一方的子进程接受信号;再由一方的子进程发送信号,另一方的父进程接收信号。
代码如下:
实现结果:
总结:
1.(有名管道)管道文件存在的意义?
为了两个互不相关的进程能够操作同一个管道
进程1创建并打开有名管道得到一个内核中的内存+管道文件+文件描述符
进程2通过打开进程1创建的管道文件就可以得到操作进程1创建的管道(内核中的内存)的文件描述符,最终进程1和进程2访问的就是同一个管道,才能通过这个管道进行通信
2.而无名管道为什么不需要这样?
因为父进程创建了管道(内核中的内存),得到了文件描述符,而子进程可以继承过去这个管道的文件描述符,所有就不需要通过其他办法得到这个管道的文件描述符了