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