程序間通訊方式

2022-06-13 15:36:11 字數 1440 閱讀 6314

程序間通訊的方式:

程序間通訊主要包括管道、系統ipc(包括訊息佇列、訊號量、訊號、共享記憶體等)、以及套接字socket。

1.管道:

管道主要包括無名管道和命名管道:管道可用於具有親緣關係的父子程序間的通訊,有名管道除了具有管道所具有的功能外,它還允許無親緣關係程序間的通訊

1.1 普通管道pipe:

1)它是半雙工的(即資料只能在乙個方向上流動),具有固定的讀端和寫端

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

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

1.2 命名管道fifo:

1)fifo可以在無關的程序之間交換資料

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

2. 系統ipc:

2.1 訊息佇列

訊息佇列,是訊息的鏈結表,存放在核心中。乙個訊息佇列由乙個識別符號(即佇列id)來標記。 (訊息佇列克服了訊號傳遞資訊少,管道只能承載無格式位元組流以及緩衝區大小受限等特點)具有寫許可權得程序可以按照一定得規則向訊息佇列中新增新資訊;對訊息佇列有讀許可權得程序則可以從訊息佇列中讀取資訊;

特點:1)訊息佇列是面向記錄的,其中的訊息具有特定的格式以及特定的優先順序。

2)訊息佇列獨立於傳送與接收程序。程序終止時,訊息佇列及其內容並不會被刪除。

3)訊息佇列可以實現訊息的隨機查詢,訊息不一定要以先進先出的次序讀取,也可以按訊息的型別讀取。

2.2 訊號量semaphore

訊號量(semaphore)與 ipc(inter process communication) 結構不同,它是乙個計數器,可以用來控制多個程序對共享資源的訪問。訊號量用於實現程序間的互斥與同步,而不是用於儲存程序間通訊資料。

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

2)訊號量基於作業系統的 pv 操作,程式對訊號量的操作都是原子操作。

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

4)支援訊號量組。

2.3 訊號signal

訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。

2.4 共享記憶體(shared memory)

它使得多個程序可以訪問同一塊記憶體空間,不同程序可以及時看到對方程序中對共享記憶體中資料得更新。這種方式需要依靠某種同步操作,如互斥鎖和訊號量等

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

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

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

3.套接字socket:

socket也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同主機之間的程序通訊。

程序間通訊方式

謝謝作者 用於程序間通訊 ipc 的四種不同技術 共享記憶體,臨界區,管道,訊息 1.訊息傳遞 管道,fifo,posix和system v訊息佇列 2.同步 互斥鎖,條件變數,讀寫鎖,檔案和記錄鎖,posix和system v訊號燈 3.共享記憶體區 匿名共享記憶體區,有名posix共享記憶體區,...

程序間通訊方式

遇到一考題,讓寫出程序間的通訊方式,突然給忘了,只想起管道和共享記憶體以及套接字。現在總結一下程序間的通訊方式以及他們之間的區別 1 管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 有名管道 named pip...

程序間通訊方式

程序間通訊主要包括管道,系統ipc 包括訊息佇列,訊號量 共享儲存 socket套接字。windows系統程序間通訊 windows提供了多種機制,使得應用程式之間能夠快速 方便地共享資料和資訊。這些機制包括rpc com ole dde 訊息 剪下板 郵件槽 管道 套接字等。但是,如果在同一臺機器...