作用:用于在不相关的进程间交换数据
创建FIFO
int mkfifo(const char *pathname, mode_t mode)
成功返回0,出错返回-1
当打开一个FIFO时,非阻塞标志(O_NONBLOK)产生下列影响:
在一般情况中(没有指定O_NONBLOCK),只读open要阻塞到某个其他
进程为写而打开此FIFO。类似地,只写open要阻塞到某个其他进程为读
而打开它。如果指定了O_NONBLOCK,则只读立即返回。但是,如果没有进程已
经为读而打开一个FIFO,那么只写open将出错返回-1,其errno是ENXIO。
类似于管道,若用write写一个尚无进程为读而打开的FIFO,则产生信号
SIGPIPE。若某个FIFO的最后一个写进程关闭了该FIFO,则将为该FIFO
的读进程产生一个文件结束标志
FIFO有下面两种用途
- FIFO由shell命令使用以便将数据从一条管道线传送到另一条,为此无需创
建中间临时文件 - FIFO用于客户进程-服务器进程应用程序中,以在客户进程和服务器进程
之间传递数据
常量PIPE_BUF说明了一次性写到FIFO的最大数据量,以确保操作的原子性