管道的实现原理类似于现实中管道的两端,由一个进程进行写操作,其余进程进行读操作。如果管道为空,则读操作会阻塞,管道满则写操作阻塞。
管道是进程间通讯的一种方式,分为有名管道和无名管道两种。
有名管道的实现原理是在磁盘上有一个文件标识,创建一个管道文件,但交互的数据存储在磁盘中,管道文件并不会占据磁盘空间。
无名管道是借助父子进程共享文件描述符来完成进程间的通讯,不会创建管道文件。
有名管道和无名管道的区别:
有名管道适用于所有进程间通讯,通讯是双向的,任意一端都可读可写,但同一时间只能一端读一端写;无名管道只适用于父子进程,不能在网络间通讯,通讯是单向的,只能一端读另一端写。