Linux下程序通訊之 無名管道

2021-09-11 03:16:51 字數 769 閱讀 5811

程序通訊:程序與程序間的資料交換,稱為程序通訊。程序通訊的方式有:共享記憶體、訊號量、管道、訊息佇列、socket等等。

管道:是一種基於檔案描述符的通訊方式,可以呼叫read、write和close等操作檔案的介面來操作。它是基於檔案描述符的通訊方式,它是半雙工模式。分為有名管道和無名管道。

無名管道:只適用於父子程序之間通訊;管道能夠把資訊從乙個程序的位址空間拷貝到另乙個程序的位址空間。fd[0]為管道裡的讀取端,fd[1]則為管道的寫入端。管道是乙個單向通訊通道,如果程序間要進行雙向通訊,通常需要定義兩個管道。

有名管道:有自己的名字和訪問許可權的限制,就像乙個檔案一樣。它可以用於不相關程序間的通訊,程序通過使用管道的名字獲得管道。通過系統呼叫read(), write()函式進行讀寫操作來實現。

#include #include #include int main(int argc, char *ar**)

; pid_t pid;

char buff[128] = ;

char write_buff = "heoll,is me!";

if(pipe(fd)<0)

if(fork() == 0) else

}

程式的輸出結果:

Linux程序間通訊之無名管道

在學習了linux程序間通訊之後,打算對所學的知識進行乙個系統的整理,形成乙個自己的系列,方便以後的複習與再次學習。第一次寫部落格,才疏學淺,有錯誤的地方請大佬們指正!管道的實現原理 管道檔案是乙個特殊的檔案,是由佇列實現的 如何建立管道?使用pipe 函式建立管道 pipe 函式 標頭檔案unis...

QProcess 程序通訊之無名管道

程序間通訊 ipc 方式包括 管道,fifo,訊號。這裡只提下無名管道,用於有親緣關係的程序之間。有名管道可以用在沒有親緣關係的程序之間。qprocess,底層使用的就是無名管道。做了乙個小demo,畢設有一塊要用到。由於底層封裝了win linux mac不同平台的無名管道實現,避免了無謂的跨平台...

linux程序通訊 無名管道

linux無名管道通訊特點無名管道是半雙工的通訊方式,資料只能一方傳送,另一方接收。無名管道只適用於親緣關係的程序通訊。資料的讀出和寫入 乙個程序向管道中寫的內容被管道另一端的程序讀出。寫入的內容每次都新增在管道緩衝區的末尾,並且每次都是從緩衝區的頭部讀出資料。include include inc...