linux程序通訊之使用匿名管道進行父子程序通訊

2022-08-13 20:09:18 字數 805 閱讀 1152

管道:是指用於連線乙個讀程序和乙個寫程序,以實現它們之間通訊的共享檔案,又稱pipe檔案。

管道是單向的、先進先出的、無結構的、固定大小的位元組流,它把乙個程序的標準輸出和另乙個程序的標準輸入連線在一起。

寫程序在管道的尾端寫入資料,讀程序在管道的首端讀出資料。

資料讀出後將從管道中移走,其它讀程序都不能再讀到這些資料。

管道提供了簡單的流控制機制。程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞。同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞。

匿名管道

匿名管道:程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞。同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞。在系統中沒有實名,不能在檔案系統中以任何方式看到該管道,它只是程序的一種資源,會隨著程序的結束而被系統清除只能用於具有親緣關係的程序之間,如父子程序或兄弟程序之間

例子:寫一程式 父程序建立子程序,並向子程序通過匿名管道傳送資訊hello,子程序接收到資訊向父程序傳送hi

#include#include

#include

#define bufsz 256

int main(void

)

if( (pid = fork())<0

)

else

if(pid > 0

)

else

return0;

}

執行結果: 

Ubuntu下Linux程序間通訊 匿名管道

linux程序間通訊 匿名管道 linux程序間通訊 fifo 有名管道 linux程序間通訊 訊息佇列 linux程序間通訊 訊號量 linux程序間通訊 共享記憶體 linux提供了多種程序間通訊的方法,常見有管道 匿名 fifo 有名管道 訊息佇列 訊號量 共享記憶體,socket通訊。1.匿...

Linux程序通訊之管道(匿名,命名)

每個程序各 自有不同的 使用者位址空間,任何 乙個程序的全域性變數在另 乙個程序中都看不到 所以進 程之間要交換資料必須通過核心,在核心中開闢 一塊緩衝區,程序1把資料從 使用者空間 拷到核心緩 沖區,程序2再從核心緩衝區把資料讀 走,核心提供的這種機制稱為程序間通訊 ipc,interproces...

Linux 程序間通訊之匿名管道

程序間通訊 目的 分類 管道 把乙個程序連線到另乙個程序的乙個資料流稱為管道 匿名管道 include 建立乙個無名管道 intpipe int pipefd 2 pipefd 檔案描述附陣列 pipefd 0 表示讀端,pipefd 1 表示寫端 成功返回0 失敗返回錯誤 呼叫pipe函式的程序 ...