Linux學習筆記(程序間通訊)

2021-09-28 16:07:01 字數 1117 閱讀 2828

(ipc)程序間通訊

linux下的多個程序間的通訊機制叫做ipc,它是多個程序之間進行相互溝通的一種方法。通過程序間通訊可以實現不同程序之間傳播和交換資訊。

程序間通訊的目的

1.資料傳輸

2.資源共享

3.乙個程序需要向另乙個或一組程序傳送訊息,通知它或它們發生了某種事件

4.程序控制

程序間通訊的方式

在linux下有多個程序間通訊的方法:半雙工管道、fifo(命名管道)、訊息佇列、訊號量、共享記憶體、socket(套接字)、訊號等。

適用於一台機器上

1.管道(分為無名管道和命名管道)

2.訊號(通過kill -l命令可以檢視機器支援的訊號)

3.訊息佇列

4.共享記憶體

5.訊號量(作業系統中是pv操作)

不同機器間通訊

socket(網路通訊)

管道

無名管道可以用於具有親緣關係程序間的通訊

命名管道可以用於無親緣關係程序間的通訊

訊號

訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發生

訊號是程序間惟一的非同步通訊方式。

signal(用於訊號掛載函式)和kill(發訊號,只能發訊號,不帶引數)

sigaction(用於訊號掛載函式)和sigqueue(發訊號,可以帶引數)

訊息佇列

訊息佇列是訊息的鍊錶

訊息佇列克服了訊號承載資訊量少的缺點

共享記憶體

使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。

注意:往往與其他通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。

訊號量

主要作為程序間以及同一程序不同執行緒之間的同步手段。

套接字(socket)

更為一般的程序間通訊機制,可用於不同機器之間的程序間通訊,網路通訊。

Linux程序間通訊 IPC 學習筆記。

ipc interprocess communication 程序間通訊 一 管道 1.無名管道 開啟與關閉管道 include int pipe int filedes 2 filedes 0 用於讀出資料,讀取時必須關閉寫入端,即close filedes 1 filedes 1 用於寫入資料,...

Linux程式設計筆記 程序間通訊

二 程序間通訊 1.管道 管道用於相關的程序 特別是父子程序的 間的通訊。使用 read 和write 進行讀寫操作。include intpipe int file descriptor 2 建立管道 file desciptor 0 為讀取端,file desciptor 1 為寫入端。例程 i...

linux程序間通訊 筆記

用於程序間通訊,建立乙個管道,一端寫,一端讀 include intpipe int fildes 2 fides 0 讀取,fides 1 寫入 成功返回0,失敗返回 1 示例 include include include include include intmain pid t pid fo...