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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 管道是UNIX环境中历史最悠久的进程间通信方式,也是最简单的进程间通信方式,一般用来作为IPC的入门,最合适...
    GeekerLou阅读 1,175评论 0 6
  • Android跨进程通信IPC整体内容如下 1、Android跨进程通信IPC之1——Linux基础2、Andro...
    隔壁老李头阅读 15,696评论 19 113
  • 一.管道机制(pipe) 1.Linux的fork操作 在计算机领域中,尤其是Unix及类Unix系统操作系统中,...
    Geeks_Liu阅读 3,719评论 1 9
  • 十月的华东沿海小城,阴风一阵接一阵,道路旁的梧桐树树叶纷纷往下掉落,连绵细细的秋雨开始不断的洒在行人的脸上,...
    三山之山阅读 580评论 0 4
  • 1. absolutely wonderful The spring festival's fireworks a...
    Bebevino阅读 170评论 0 0