fifo(7) - Linux 手册页
名称
fifo - 先入先出特殊文件,命名管道描述
内核为每个被至少一个进程打开的 FIFO 特殊文件维护恰好一个管道对象。在数据可以传递之前,FIFO 必须在两端(读和写)都打开。通常,打开 FIFO 会阻塞,直到另一端也被打开。
进程可以以非阻塞模式打开 FIFO。在这种情况下,仅以只读方式打开即使在另一端尚未打开的情况下也会成功,仅以只写方式打开除非另一端已经打开,否则将失败并显示 ENXIO(不存在设备或地址)。
在 Linux 下,以阻塞和非阻塞模式打开 FIFO 进行读写都会成功。POSIX 将这种行为未定义。这可用于在没有可用读取器的情况下打开 FIFO 进行写入。使用连接两端与自身通信的进程应非常小心,以免发生死锁。
说明
当进程尝试写入另一端未打开用于读取的 FIFO 时,进程会收到 SIGPIPE 信号。FIFO 特殊文件可以通过 mkfifo(3) 创建,并且在 ls -l 中以文件类型 aqpaq 指示。