没有最好,只有更好!
分类: LINUX
2013-08-14 21:46:44
本篇文章将对Linux IPC通讯进行总结,也是自己对IPC认识的总结。本次主要介绍管道与有名管道。
管道(PIPE、FIFO):
1、使用场合:Linux IPC 通讯方式比较老的一种方式,比较适合数据量较小的通讯方式, 常用于控制命令。
ulimit -a 可以看到 pipe size (512 bytes, -p) 8 4k
2、特点:半双工方式,如cmd process A->process B ACK process B->process A
3、有名管道与无名管道的区别:
无名管道适用于具有亲缘关系的进程间通讯。
有名管道可以在任意进程间通讯,通过管道文件。
4、管道使用步骤
有名管道:
(1)mkfifo 创建管道文件
(2)open 打开管道文件,设置属性,一般写阻塞,读非阻塞
(3)read
(4)write
无名管道:
(1)pipe
(2)设置阻塞、非阻塞属性
(3)pipe[0] for read
pipe[1] for write
5、注意事项:
(1)SIGPIPE
如果管道通讯一方已关闭fd,而本方要在写第一次报出此种信号,第二次段错误退出,要对此信号进行处理
(2)半双工方式
6、特殊用法:
线程间通讯:适合于传地址如大数据量的buf地址