linux中程序的一種通訊方式——匿名管道
pipe函式建立管道
呼叫程式設計客棧pipe函式時在核心中開闢一塊緩衝區(稱為管道)用於通訊,它有乙個讀端乙個寫端,然後通過_pipe引數傳出給使用者程式兩個檔案描述符,_pipe[0]指向管道的讀端,_pipe[1]指向管道的寫端。所以管道在使用者程式看起來就像乙個開啟的檔案,通過read(_pipe[0]);或者write(_pipe[1]);向這個檔案讀寫資料其實是在讀寫核心緩衝區。pipe函式呼叫成功返回0,呼叫失敗返回-1。
1父程序呼叫pipe開闢管道,得到兩個檔案描述符指向管道的兩端。
2. 父程序呼叫fork建立⼦程序,那麼子程序也有兩個檔案描述符指向同一管道。
3. 父程序關閉管道讀端,子程序關閉管道寫端。父程序可以往管程式設計客棧道裡寫,子程序可以從管道⾥讀,管道是用環形佇列實現的,資料從寫端流入從讀端流出,這樣就實現了程序間通訊
匿名管道間的通訊是單向的,並且是、只能是具有血緣關係的程序間通訊
#include
#include
#include
#include
int main()
pid_t id = fork ();
if (id<0)
else if (id == 0)
close (_pipe[1]);
exit(123);
} else
else if(s==0)
else
count --;
if (count == 0)
} int status = 0;
pid_t _wait = waitpid (id, &status,0);
if (_wait > 0)
} return 0;
} 本文標題: linux 匿名管道例項詳解
本文位址: /ruanjian/c/194295.html
Linux 匿名管道
管道這裡還有幾組概念 匿名管道 概念 匿名管道 匿名管道用於程序之間通訊,且僅限於本地父子程序之間通訊 建立方式 int pipe int fd 2 fd 檔案描述符陣列,其中fd 0 表示讀端,fd 1 表示寫端 返回值 成功返回0,失敗返回錯誤 5大特點 4種情況 例項 從鍵盤讀取資料,寫入管道...
linux管道通訊之匿名管道
管道檔案的大小始終是為0,更多的時候,它只是起乙個標識作用,標識核心中的那塊快取區。就會出現所謂的匿名管道 比如父子程序之間的通訊 使用pipe建立匿名管道,看不到pipe檔案。pipe int fds 2 fds 0 讀,fds 1 寫 返回2個檔案描述符,乙個讀檔案描述符,乙個寫檔案描述符。匿名...
linux 匿名管道pipe
管道是一種最基本的ipc機制,由pipe函式建立 include int pipe int filedes 2 呼叫pipe函式時在核心中開闢一塊緩衝區 稱為管道 用於通訊,它有乙個讀端乙個寫端,然後通 過filedes引數傳出給使用者程式兩個檔案描述符,filedes 0 指向管道的讀端,file...