(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...