0.簡介
ipc工具分為3類:
通訊:即程序間資料的交換。
同步:即程序和執行緒操作的先後順序控制。
訊號:可以作為程序間同步、資料交換的一種技術。
如圖:
ipc通訊可以分為兩類:資料傳輸工具和共享記憶體,資料傳輸是一端使用者程式將資料寫入核心,另一端的使用者程式從核心取出資料。共享記憶體,允許程序間將資料放入共享記憶體中完成資料交換,速度最快。
ipc同步技術有:訊號量、檔案鎖、互斥體與條件變數。
在程式中使用這些工具,都有唯一的識別符號進行區分,如下圖:
這些ipc工具在程式中使用可訪問和永續性如下表:
1.管道與fifo
管道是非常古老的ipc方法,在shell命令列也用過。
例如:ls | wc -l
這個命令就是建立兩個程序執行ls和wc命令,將執行ls命令的程序標準輸出連線到管道的寫入端,執行wc命令的程序將標準輸入連線到管道的讀出端。乙個管道是乙個位元組流,且只能按順序讀寫,不能隨機讀寫,管道是單向的(也有雙向管道,替換方案是 unix domain 流socket對),可以確保在乙個時刻寫入不超過pipe_buf(4096)位元組的操作都是原子的,管道的儲存能力為65536位元組。
建立管道:
#includeint pipe(int filefds[2]); //0 success,-1 error ,filefds[0] read,filefds[1] write
Linux程序間通訊 IPC
linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v...
Linux程序間通訊(IPC)
程序通訊有例如以下一些目的 a 傳輸資料 乙個程序須要將它的資料傳送給還有乙個程序。傳送的資料量在乙個位元組到幾m位元組之間 b 共享資料 多個程序想要操作共享資料。乙個程序對共享資料的改動,別的程序應該立馬看到。c 通知事件 乙個程序須要向還有乙個或一組程序傳送訊息。通知它 它們 發生了某種事件 ...
Linux程序 程序間通訊IPC
一 linux程序 1 程序的記憶體映像 2 解釋 bss段 在採用段式記憶體管理的架構中,bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。資料段 在採用段式記...