进程间通信简介
精华
小牛编辑
123浏览
2023-03-14
进程间通信(IPC)是一个涉及一个进程与另一个进程的通信的机制。 这通常只发生在一个系统中。
通信可以有两种类型 -
- 只从一个进程启动的相关进程之间,如父进程和子进程。
- 在不相关的进程之间,或者两个或多个不同的进程。
在进一步讨论此主题之前需要了解的一些重要术语。
管道 - 两个相关过程之间的通信。 该机制是半双工的,意味着只能从第一个进程与第二个进程通信。 为了实现全双工,即要对于在第一进程与第二进程之间来回通信,就需要管道了。
FIFO - 两个不相关进程之间的通信。 FIFO是全双工的,这意味着第一个进程可以与第二个进程进行通信,反之亦然。
消息队列 - 两个或多个具有全双工容量的进程之间的通信。 这些进程将通过发布消息并将其从队列中取出来相互通信。 一旦检索后,消息就不再在队列中可用。
共享内存 - 两个或多个进程之间的通信是通过所有进程之间共享的内存来实现的。 共享内存需要通过同步对所有进程的访问来保护彼此。
信号灯 - 信号灯用于同步对多个进程的访问。 当一个进程想要访问内存(用于读取或写入)时,需要在访问被移除时被锁定(或保护)并释放。 这需要所有进程重复以保护数据。
信号 - 信号是通过信号的方式在多个过程之间进行通信的机制。 这意味着源进程将发送一个信号(由数字识别),目标进程将相应地处理它。
注 - 本教程中几乎所有示例程序都基于Linux操作系统下的系统调用(在Ubuntu中执行)。