unix程序間通訊

2021-09-06 03:09:26 字數 1113 閱讀 8933

程序間通訊主要可以分為兩大類:

1. 傳遞控制資訊(程序間的低階通訊); 2. 傳送大批量資料(程序間的高階通訊)

主要的通訊方式主要有:

1. 主從式通訊方式(master-servant communication):

通訊的程序雙方存在一種主從式的隸屬關係。主程序是程序的控制者,從程序是程序的從屬者。主要有以下特點:

主程序對從程序的資料區和資源享有使用權,但是從程序卻不能使用主程序的資料區和資源;

(2)主程序控制從程序的工作和動作過程;

(3)程序的主從關係確定後,整個通訊過程中不再改變從屬關係;

eg: 終端控制程序和終端程序

2. 會話式通訊(dialogue communication)

通訊的雙方採用請求和回應請求的方式進行通訊。通訊雙方分別叫做使用程序和服務程序。主要有以下特點:

(1) 通訊時,使用程序要得到服務程序的允許,方能使用服務程序;

(2) 服務程序是根據使用程序的請求服務的,而且在通訊中,服務程序始終為控制程序;

(3) 程序在確定會話式方式時要建立固定的邏輯關聯關係;

3. 訊息或郵件通訊

通訊的雙方地位對等,特點如下:

(1) 傳送程序能否傳送資訊,只與訊息的緩衝區或郵箱中是否有足夠大的空閒空間來滿足這次通訊。與將訊息傳送到的目的程序的狀態無關。

(2)傳送程序與接收程序間不要建立直接的邏輯關係;

(3)訊息的接受和傳送要通過訊息緩衝或者郵箱來完成。

4. 共享儲存區的通訊方式

特點:(1) 通訊時,通訊的資料或資訊不發生儲存移動;

(2) 需要互動時,通訊雙方 通過乙個共享儲存區完成通訊

(3) 共享儲存區中的資料可以作為需要互動程序的一部分儲存在程序體中;

unix主要支援三種通訊方式:

1. 基本通訊:主要用來協調程序間的同步和互斥

(1)鎖檔案通訊

通訊的雙方通過查詢特定目錄下特定型別的檔案(稱鎖檔案)來完成程序間對臨界資源訪問時的互斥;例如程序p1訪問乙個臨界資源,首先檢視是否有乙個特定型別檔案,若有,則等待一段時間再查詢鎖檔案。

(2)記錄鎖檔案

2. 管道通訊:適應大批量的資料傳遞

3. ipc    :適應大批量的資料傳遞

UNIX 程序間通訊

linux繼承了at t和bsd以及早期的程序間的通訊 一般常用的通訊方式有 1 傳統的通訊方式 無名管道,有名管道和訊號。2 對於sys 5 的程序間通訊採用了共享記憶體,訊息佇列和訊號燈的形式。3 bsd,對於一般網路間的通訊採用來套接字的方式實現。1 無名管道的機制以及建立 對於無名管道只是用...

Unix程序間的通訊

1.管道可以用作父子程序之間的通訊,pipe函式,將fd 0 開啟用於讀取資料,fd 1 開啟用於寫入資料。通常,對於單方向通訊,讀端會關閉寫fd,即fd 1 寫端會關閉讀fd,即fd 0 int main read fd 0 buf,30 sleep 2 write stdout fileno,b...

Unix環境程序間通訊(二)

struct shmid ds struct ipc perm 4.4 include include 開啟建立儲存段 int shmget key t key,size t size,int shm 返回 失敗 1,成功返回非負的共享儲存段 id 第乙個引數 key是共享儲存關鍵字。它有特殊值 i...