Linux 程序通訊

2021-04-25 13:52:12 字數 948 閱讀 7993

程序通訊

通訊(communication)意味著在程序間傳送資料。也把程序間控制資訊的交換稱為低階通訊,而把程序間大批量資料的交換稱為高階通訊。

程序通訊的型別

(1)共享儲存器系統(記憶體)

共享儲存器系統為了傳送大量資料,在儲存器中劃出一塊共享儲存區,諸程序可通過對共享儲存區進行讀資料或寫資料以實現通訊。

(2)訊息傳遞系統

分為兩種

a、直接通訊方式

傳送程序可將訊息直接傳送給接收程序,即將訊息掛在接收程序的訊息緩衝佇列上,而接收程序可從自己的訊息緩衝佇列中取得訊息。

b、間接通訊方式

傳送程序將訊息傳送到指定的信箱中,而接收程序從信箱中取得訊息。

(3)管道通訊系統

在unix作業系統中,開創了一種借助檔案和檔案系統形成的一種通訊方式。所謂管道是指用於連線乙個讀程序和乙個寫程序,以實現它們之間通訊的共享檔案,又稱pipe檔案。向管道提供輸入的傳送程序,以字元流方式將大量的資料送入管道,而接收程序從管道中接收資料。由於傳送程序和接收程序是利用管道進行通訊,故稱為管道能信系統。

(4)訊息緩衝佇列通訊機制

a、訊息緩衝佇列通訊機制簡介

由於訊息緩衝機制中所使用的緩衝區為公用緩衝區,因此使用訊息緩衝機制傳送資料時,兩通訊程序必須滿足如下條件:

第一、在傳送程序把寫入訊息的緩衝區掛入訊息佇列是,應禁止其他程序對該訊息佇列的訪問,否則,將引起訊息佇列的混亂。同理,當接收程序正從訊息佇列中取訊息時,也應禁止其他程序對該佇列的訪問。

第二、當緩衝區中無訊息存在時,接收程序不能接收到任何訊息;而傳送程序是否可以傳送訊息,則只由傳送程序是否能夠申請到緩衝區決定。

訊息緩衝佇列通訊機制中的資料結構

(1)訊息緩衝區

typedefstruct message buffer

b、pcb中有關程序通訊的資料項

typedefstruct message bolck

Linux程序通訊

linux程序通訊 無名管道主要用於有親緣關係的程序通訊,其位於外存區域,但在檔案系統中不可見。在實際應用中,程序通訊往往發生在無關程序之間,此種情形下,若仍想使用管道,則必須使用有名管道,也稱命名管道或fifo檔案。這種型別的管道在檔案系統中可見,建立時需要指定具體路徑和檔名,管道建立之後,可用l...

Linux 程序通訊

linux下程序通訊的八種方法 管道 pipe 命名管道 fifo 共享記憶體 shared memory 訊息佇列 message queue 訊號量 semaphore 訊號 signal 套接字 socket linux命令中,執行乙個程式,後面加上 代表後台執行,也就是執行這個程式的同時,你...

Linux程序通訊

lniux程序間通訊 目的 1.資料傳輸 乙個程序需要將他的資料傳送給另乙個程序 2.資源共享 多個程序之間共享同樣的資源 3.通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知他們發生了某種事件 4.程序控制 有些程序希望完全控制另乙個程序的執行 如debug程序 此時控制程序希望攔截另乙個程...