linux c之命名管道简单使用

136 阅读1分钟

1、介绍FIFO(命名管道)

           管道有局限性,只能在具有亲缘关系的进程间通信,但是命名管道克服了这个问题,可以实现无亲缘关系的进程之间的通信

API介绍:

 

    /* FIFO 命名管道 */  
    /* 
     * 函数功能:功能和管道类似; 
     * 返回值:若成功则返回0,若出错则返回-1; 
     * 函数原型: 
     */  
    #include <sys/stat.h>  
      
    int mkfifo(const char *pathname, mode_t mode);  
    /* 
     * 说明: 
     * 参数mode和open函数的mode参数一样; 
     * pathname:一个 Linux 路径名,它是 FIFO 的名字。即每个 FIFO 与一个路径名相对应。 
     * mode:指定的文件权限位,类似于 open 函数的第三个参数。 
     * 即创建该 FIFO 时,指定用户的访问权限,可以取以下值: 
     * S_IRUSR,S_IWUSR,S_IRGRP,S_IWGRP,S_IROTH,S_IWOTH。 
     * 该函数创建一个FIFO之后,就可用open函数打开; 
     */  


mkfifo 函数默认指定 O_CREAT | O_EXECL 方式创建 FIFO,如果创建成功,直接返回0。如果 FIFO 已经存在,则创建失败,会返回-1\