首页 > 代码库 > 进程间通信 ---- 管道与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 用法技巧
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。