管道、消息队列、共享内存、信号量的特点
在之前我们已经了解过了进程间通信的几种方式:管道、消息队列、共享内存以及信号量。今天我们就来总结一下这几种方式的各自的特点分别是什么,和他们相应的应用场景。是对于这个知识点的一个复习和巩固。
为什么要有进程间通信?
1、为了传输数据:一个进程需要将它的数据发送给另外一个进程;
2、为了共享资源:多个进程之间有时需要共享同样的一份资源;
3、为了通知事件:一个进程需要向另一个进程或者进程组发送消息通知他们发生了某些事件(比如:一个进程退出时需要通知他的父进程);
4、为了实现进程控制:有些进程希望控制另一个进程的执行,此时控制进程希望能够拦截另外一个进程的所有陷入和异常,并能够及时知道他的状态改变。
进程间通信的本质是什么?
不同的两个进程之间,他们的进程地址空间自然也是相互独立的,而进程间通信就是为了让两个进程之间能够共同的知晓某一份数据、消息等这些资源。一句话就是:进程间通信的本质就是:让不同的进程可以看到同一份资源
管道
把从一个进程连接到另一个进程的一个数据流称为一个管道。
管道又分为命名管道和匿名管道
(1)匿名管道:管道是半双工的,数据只能单向通信;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。
(2&#