进程间通信 - 概述



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

通信可以分为两种类型:

  • 在相关进程之间进行通信,并且仅由一个进程发起,例如父进程和子进程。

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

在继续学习本主题之前,我们需要了解一些重要的术语。

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

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

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

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

信号量 - 信号量用于同步对多个进程的访问。当一个进程想要访问内存(读取或写入)时,它需要被锁定(或保护),并在访问结束后释放。所有进程都需要重复此操作以确保数据安全。

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

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

广告