IPC进程通信方式——管道通信方式

管道分无名管道和有名管道(FIFO)

  管道通信是Unix进程通信最早的方式,只适用于两个进程之间通信,网格通信就很复杂,而且它是半双工的,一个管道一般只用于一个方向。

  关于为什么是半双工的:如果你又要读又要写,你的可能读到自己写的。无名管道和有名管道读写方式区别不大,只是亲缘进程可不可用的关系。

  无名管道,要共享文件描述符,fork之后管道的两个读写描述符一起用指向一样,所以可以进行通信。 非亲缘进程不能通过名字找到,但是有名管道是可以显式地找到,通过文件描述符打开。

  下面是无名管道的示例代码(第二六行buf和fd[0]写反了),但是备份已经删除了,代码写的很乱,建议自己练练手:
在这里插入图片描述
  我们要明白的是管道的原理,管道用的是内存中的高速缓存,管道文件不在硬盘中,它用的是伪文件系统,不属于任何文件系统,只在内存中存在(有名管道会创建文件但其实不在硬盘中)。

发布了69 篇原创文章 · 获赞 83 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41033366/article/details/104755492