linux 匿名管道例項詳解

2022-10-04 01:00:13 字數 959 閱讀 8878

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...