FIFO - Linux手册页

时间:2019-08-20 18:01:53  来源:igfitidea点击:

Linux程序员手册 第7部分
更新日期: 2017-11-26

名称

fifo-先进先出特殊文件,命名管道

说明

FIFO特殊文件(命名管道)类似于管道,不同之处在于它是作为文件系统的一部分进行访问的。它可以通过多个进程打开以进行读取或写入。当进程通过FIFO交换数据时,内核会在内部传递所有数据,而无需将其写入文件系统。因此,FIFO特殊文件在文件系统上没有内容。文件系统条目仅用作参考点,以便进程可以使用文件系统中的名称访问管道。

内核为至少由一个进程打开的每个FIFO特殊文件维护一个管道对象。必须先在两端打开FIFO(读取和写入),然后才能传递数据。通常,打开FIFO块,直到另一端也打开。

进程可以以非阻塞模式打开FIFO。在这种情况下,即使没有人在写侧打开过,只读打开也成功,并且ENXIO(没有这样的设备或地址)打开只写失败,除非另一端已经打开。

在Linux下,打开FIFO进行读写将在阻塞和非阻塞模式下都成功。 POSIX未定义此行为。在没有可用的读取器的情况下,可用于打开FIFO进行写入。使用连接两端进行通信的进程应该非常小心,以免发生死锁。

备注

有关FIFO上I / O语义的详细信息,请参见pipe(7)。

当进程尝试写入另一端未打开供读取的FIFO时,将向该进程发送SIGPIPE信号。

FIFO特殊文件可由mkfifo(3)创建,并由ls -l表示,文件类型为aqpaq。

另外参见

mkfifo(1),open(2),pipe(2),sigaction(2),signal(2),socketpair(2),mkfifo(3),pipe(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/