文章笔记。原文章:IPC - Named Pipes
匿名管道
- 使用
|创建。 - 由内核创建的内存缓冲区。数据不会落盘。
- 可见性:只有caller进程,和它的子进程可见。包含2个fd,一个用于read,一个用于write。
- 数据流是单向的。一旦read,数据立即从缓冲区消失。
命名管道
- 使用
mkfifo创建。 - 管道名以磁盘文件形式出现。和普通文件的区别是,命名管道文件永远是0字节(因为只是进程间通信方式)。
- 可见性:类似普通文件,所有进程都可见。
- 数据流可以双向。
命名管道的特性: 在至少有一个并发读取器之前,没有字节被写入到命名管道缓冲区。
这种行为确保在实际写入缓冲区之前,写入到命名管道的数据不会丢失,并确保在写入缓冲区之前有一个准备处理数据的使用者。它有助于使用命名管道同步写入和读取进程之间的通信。