进程间通信方式
一、管道(pipe):
转自:http://blog.chinaunix.net/uid-26833883-id-3227144.html
1.无名管道:
1.管道是基于文件描述符进行通信,当建立一个管道时,会创建两个文件米哦舒服fd[0],fd[1],fd[0]表示读管道,fd[1]表示写管道;
2.内存保存在内存中。
3.半双工的,数据只能向一个方向流动,需要双方通信时,需要建立起两个管道;
4.管道只能用于具有亲缘关系的进程之间通信,如父子进程,兄弟进程,一般会接合fock函数来进行进程间通信。
2.有名管道:
1.相对于无名管道,有名管道可以使得没有亲缘关系的进程可以通信。
2.原理是将管道与文件名做绑定,以文件的形式存在于文件系统中,内容存在内存中。
3.使用时,需要先open然后再操作。
二、共享内存:
1.可以实现非亲缘关系的进程间通行。
2.linux的共享内存没有提供同步机制,需要使用其它手段进行,如信号量。