进程间通信 - 概述


进程间通信 (IPC) 是一种涉及一个进程与另一个进程通信的机制。这通常只发生在一个系统中。

沟通可以有两种类型 -

  • 仅从一个进程启动的相关进程之间,例如父进程和子进程。

  • 在不相关的进程之间,或者两个或多个不同的进程之间。

以下是在进一步讨论此主题之前我们需要了解的一些重要术语。

管道- 两个相关进程之间的通信。该机制是半双工的,这意味着第一个进程与第二个进程通信。为了实现全双工,即第二个进程与第一个进程通信需要另一个管道。

FIFO - 两个不相关进程之间的通信。FIFO 是全双工的,这意味着第一个进程可以与第二个进程同时通信,反之亦然。

消息队列- 两个或多个进程之间具有全双工能力的通信。进程将通过发布消息并从队列中检索消息来相互通信。一旦检索到,该消息就不再在队列中可用。

共享内存- 两个或多个进程之间的通信是通过所有进程之间的共享内存来实现的。共享内存需要通过同步对所有进程的访问来相互保护。

信号量- 信号量用于同步对多个进程的访问。当一个进程想要访问内存(进行读或写)时,需要对其进行锁定(或保护),并在访问解除时将其释放。所有进程都需要重复此操作以保护数据。

信号- 信号是一种通过信令在多个进程之间进行通信的机制。这意味着源进程将发送信号(通过数字识别),目标进程将相应地处理它。

注意- 本教程中的几乎所有程序都基于 Linux 操作系统下的系统调用(在 Ubuntu 中执行)。