Linux程序間的IPC通訊概括

2021-06-19 15:42:16 字數 958 閱讀 4506

linux程序間的ipc通訊主要包括:posix ipc和system ipc,今天我要講的是命名管道fifo,其他的以後再講。

命名管道fifo(first in,first out):

管道沒有名字,所以管道只能用於有共同祖先程序的各程序之間,我們無法再沒有親緣關係的兩個程序間用管道通訊。

fifo指代先進先出(first in, first out),fifo類似管道,它是乙個單向(半雙工)資料流,不同於管道的是它與乙個路徑名關聯,從而允許沒有親緣關係的程序

訪問同乙個fifo,fifo也稱有名管道。

fifo由mkfifo()函式建立。

#include#includeint mkfifo(char* pathname,mode_t mode);//成功返回0,失敗返回-1
其中pathname是乙個普通的unix路徑名,它是該fifo的名字。

mode引數指定檔案許可權位,類似open函式的第三個引數,其值由以下常量指定

s_irusr

s_iwusr

s_irgrp

s_iwgrp

s_iroth

s_iwoth

mkfifo已經包含了o_creat|o_excl(即要麼重新建立要麼返回報錯:所指定的名字的fifo已經存在)

如何要開啟乙個已經存在的fifo改為用open函式

建立完fifo後,要麼開啟為讀要麼開啟為寫,不能即開啟為讀又開啟為寫,因為fifo是半雙工的。

對管道或fifo的write總是往末尾新增資料,對他們的read總是從開頭取資料,對他們呼叫lseek會報錯

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段屬於靜態記憶體分配。資料段 在採用段式記...