概述

优质
小牛编辑
154浏览
2023-12-01

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

沟通可以有两种类型 -

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

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

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

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

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

Message Queues - 具有全双工容量的两个或多个进程之间的通信。 这些进程将通过发布消息并将其从队列中检索出来来相互通信。 检索后,队列中的消息不再可用。

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

Semaphores - 信号量用于同步对多个进程的访问。 当一个进程想要访问内存(用于读取或写入)时,需要锁定(或保护)并在删除访问时释放它。 这需要由所有进程重复以保护数据。

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

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