程序間通訊的五種方式

2021-10-12 18:21:06 字數 840 閱讀 8418

參考文獻

它是半雙工的(即資料只能在乙個方向上流動),具有固定的讀端和寫端, 如果要進行雙工通訊,需要建立兩個管道

它只能用於具有親緣關係的程序之間的通訊(也是父子程序或者兄弟程序之間)。

它可以看成是一種特殊的檔案,對於它的讀寫也可以使用普通的read、write 等函式。但是它不是普通的檔案,並不屬於其他任何檔案系統,並且只存在於記憶體中。

fifo可以在無關的程序之間交換資料,與無名管道不同。

fifo有路徑名與之相關聯,它以一種特殊裝置檔案形式存在於檔案系統中。

fifo的通訊方式類似於在程序中使用檔案來傳輸資料,只不過fifo型別檔案同時具有管道的特性。在資料讀出時,fifo管道中同時清除資料,並且「先進先出」。

訊息佇列,是訊息的鏈結表,存放在核心中。乙個訊息佇列由乙個識別符號(即佇列id)來標識

它是乙個計數器。訊號量用於實現程序間的互斥與同步,而不是用於儲存程序間通訊資料。

訊號量用於程序間同步,若要在程序間傳遞資料需要結合共享記憶體。

訊號量基於作業系統的 pv 操作,程式對訊號量的操作都是原子操作(所謂原子操作是指不會被執行緒排程機制打斷的操作;這種操作一旦開始,就一直執行到結束,中間不會有任何 context switch (切 換到另乙個執行緒))。

每次對訊號量的 pv 操作不僅限於對訊號量值加 1 或減 1,而且可以加減任意正整數。

支援訊號量組。

共享記憶體(shared memory),指兩個或多個程序共享乙個給定的儲存區。

共享記憶體是最快的一種 ipc,因為程序是直接對記憶體進行訪問。

因為多個程序可以同時操作,所以需要進行同步。

訊號量+共享記憶體通常結合在一起使用,訊號量用來同步對共享記憶體的訪問。

程序間通訊的五種方式

前言 程序通訊 每個程序各自有不同的使用者位址空間,任何乙個程序的全域性變數在另乙個程序中都看不到,所以程序之間要交換資料必須通過核心,在核心中開闢一塊緩衝區,程序a把資料從使用者空間拷到核心緩衝區,程序b再從核心緩衝區把資料讀走,核心提供的這種機制稱為程序間通訊。程序間通訊 ipc 介紹 程序間通...

程序間的五種通訊方式介紹

程序間通訊 ipc,interprocess communication 是指在不同程序之間傳播或交換資訊。ipc的方式通常有管道 包括無名管道和命名管道 訊息佇列 訊號量 共享儲存 socket streams等。其中 socket和streams支援不同主機上的兩個程序ipc。1.管道 pipe...

列舉五種windows下程序間通訊方式

1 剪貼簿clipboard 在16位時代常使用的方式,cwnd中提供支援 2 視窗訊息 標準的windows訊息以及專用的wm copydata訊息 sendmessage 接收端必須有乙個視窗 3 使用共享記憶體方式 shared memory a.設定一塊共享記憶體區域 lpvoid mapv...