[Linux进程间通信]FIFO

作用:用于在不相关的进程间交换数据

创建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的最大数据量,以确保操作的原子性

你可能感兴趣的:([Linux进程间通信]FIFO)