FIFO 与O_NOBLOCK

一般的I/O(open close read write unlink)函数都可以用于FIFO文件,需要注意的是,在使用open函数打开一个FIFO文件时,open函数参数flag标志位的O_NONBLOCK标志,它关系到函数的返回状态。详细说明如表14-2所示。
表14-2 open函数的flag(O_NONBLOCK)详细说明
O_NONBLOCK标志
详 细 说 明
置位
只读open立即返回。当只写open时,如果没有进程为读打开FIFO,则返回–1,并置errno值为ENXIO
不置位
open视情况阻塞。只读open要阻塞到有进程为写打开FIFO,只写open要阻塞到有进程为读打开FIFO
FIFO的写操作规则类似于匿名管道的写操作规则,当没有进程为读打开FIFO,调用write函数来进行写操作会产生信号SIGPIPE,则信号可以被捕捉或者完全忽略。
%注意:当FIFO的所有写进程都已经关闭,则为FIFO的读进程产生一个文件结束符。
原文地址:https://www.cnblogs.com/rabbit0212/p/11301633.html