FIFO
Section: Linux Programmer's Manual (7)
Updated: 2016-12-12
查看本页索引
返回目录
NAME
fifo - 先进先出的特殊文件, 命名管道
描述
一个先进先出(FIFO)的特殊文件(一个命名管道)类似一个管道,但它是作为文件系统的
一部分来访问的。
可以同时有多个进程打开它进行读写。当进程间通过 FIFO 交换数据时,内核会在其内部传送
所有数据,而不会写入文件系统。即,FIFO 特殊文件在文件系统中没有任何内容;
文件系统中的文件条目只是作为一个参照点而已,使得进程可以用文件系统中的一个名字
对其进行访问。
内核会为至少有一个进程打开了的 FIFO 特殊文件维护单独一个管道对象。
在数据经由 FIFO 传输之前,FIFO 的两端(读和写)必须同时打开。
一般来说,打开 FIFO 的行为会阻塞,直至另一端也被打开。
一个进程可以使用非阻塞模式打开一个 FIFO。这种情况下,即使写端没有打开,
打开读端还是会成功。但是,如果读端没有打开,打开写端会失败,并且得到
一个
ENXIO
(设备或地址不存在)。
在 Linux 下,不管是阻塞还是非阻塞模式,打开一个 FIFO 用作同时读写都会成功。
POSIX 对于这种情况未进行定义。这个可以用来在读端不可用的情况下打开写端。
一个进程在同时用同一个 FIFO 的两端来实现自己和自己通信的时候要特别小心,
应避免出现死锁。
注释
当一个进程企图向读端没有打开的 FIFO 写数据的时候,进程会收到一个
SIGPIPE
信号。
FIFO 特殊文件可以用
mkfifo(3)
来创建,并且
ls -l
会对其添加一个特殊标记“p”进行指示。
参见
mkfifo(1),
open(2),
pipe(2),
sigaction(2),
signal(2),
socketpair(2),
mkfifo(3),
pipe(7)
本页面原英文版是 Linux
man-pages
项目 4.09 版的一部分。
如需了解这个项目的描述、汇报漏洞的相关信息及本页面的最新版本,
请访问
https://www.kernel.org/doc/man-pages/.
本页面中文版由中文 man 手册页计划提供。
翻译人员:Boyuan Yang <073plan@gmail.com>
获取日期:2016-12-12
翻译日期:2016-12-16
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh
Index
- NAME
-
- 描述
-
- 注释
-
- 参见
-
-
This document was created by
man2html,
using the manual pages.
Time: 03:18:11 GMT, July 01, 2024