程序間通訊 - 概述



程序間通訊 (IPC) 是一種涉及一個程序與另一個程序通訊的機制。這通常只發生在一個系統中。

通訊可以分為兩種型別:

  • 在相關程序之間進行通訊,並且僅由一個程序發起,例如父程序和子程序。

  • 在不相關程序之間進行通訊,或兩個或多個不同的程序之間進行通訊。

在繼續學習本主題之前,我們需要了解一些重要的術語。

管道 - 兩個相關程序之間的通訊。該機制是半雙工的,這意味著第一個程序與第二個程序通訊。要實現全雙工,即第二個程序與第一個程序通訊,需要另一個管道。

FIFO - 兩個不相關程序之間的通訊。FIFO 是全雙工的,這意味著第一個程序可以與第二個程序通訊,反之亦然,並且可以同時進行。

訊息佇列 - 兩個或多個程序之間進行通訊,具有全雙工能力。程序之間透過將訊息釋出到佇列中並從佇列中檢索訊息來進行通訊。一旦檢索,訊息將不再在佇列中可用。

共享記憶體 - 兩個或多個程序之間的通訊是透過所有程序共享的一塊記憶體來實現的。共享記憶體需要透過同步所有程序對它的訪問來相互保護。

訊號量 - 訊號量用於同步對多個程序的訪問。當一個程序想要訪問記憶體(讀取或寫入)時,它需要被鎖定(或保護),並在訪問結束後釋放。所有程序都需要重複此操作以確保資料安全。

訊號 - 訊號是一種透過訊號方式在多個程序之間進行通訊的機制。這意味著源程序將傳送一個訊號(由數字識別),目標程序將相應地處理它。

注意 - 本教程中幾乎所有程式都基於 Linux 作業系統下的系統呼叫(在 Ubuntu 中執行)。

廣告

© . All rights reserved.