首页 > 代码库 > 进程间通信 ---- 管道与FIFO 用法技巧

进程间通信 ---- 管道与FIFO 用法技巧

1.管道的创建

1.1 mkfifo(const char *pathname,mode_t mode);
   函数已隐含指定O_CREAT|O_EXCL,所以它要么创建一个新的FIFO,要么返回EEXIST错误(已存在)。
   所以在创建已存在FIFO或新的FIFO,应该先调用mkfifo,并检查返回值 是否是EEXIST错误,若是EEXIST错误,则调      用open函数。

2.FIFO或管道读写

   2.1对管道或FIFO的write 总是往末尾添加数据,对管道或FIFO的read总是从头开始读的。如果对管道或FIFO调用lseek,就返回ESPIPE的错误
   2.2 进程间通信 注意 读写管道的顺序 防止产生死锁。

3.管道或FIFO的删除

    管道---进程关闭之后,自动消失。
    FIFO --- 调用unlink 从文件系统删除。

4.管道或FIFO的原子操作

原子write属性 往管道或FIFO的写入的数据<=PIPE_BUF(管道缓冲大小),与其他属性无关

5 进程间通信

   写进程关闭管道或FIFO的消息通过read()返回文件结束描述符传给读进程的。
   读进程关闭管道或FIFO的消息通过给写进程传递一个信号。




进程间通信 ---- 管道与FIFO 用法技巧