無名管道pipe

2021-07-13 09:49:34 字數 726 閱讀 2421

管道是unix系統ipc的最古老形式,所有的unix系統都支援這種通訊機制。有兩個侷限性:

(1)       支援半雙工;

(2)       只有具有親緣關係的程序之間才能使用這種無名管道;

pipe函式

功能:建立無名管道

函式原型:#include

int pipe(int filedes[2]);

引數經由引數filedes返回兩個檔案描述符,filedes[0]為讀而開啟,filedes[1]為寫而開啟。

經典的管道使用模型

使用管道的注意事項:

1.       當讀乙個寫端已經關閉的管道時,在所有資料被讀取之後,read函式返回值為0,以指示到了檔案結束處;

2.       如果寫乙個讀端關閉的管道,則產生sigpipe訊號。如果忽略該訊號或者捕捉該訊號並處理程式返回,則write返回-1,errno設定為epipe 例項

系統呼叫pipe建立乙個管道,子程序想管道裡面寫

child process is sending a message

父程序從管道中讀出,並顯示

#include

#include

#define size    128

int pid;

int main(int argc, char *argv)

else   //in parent process

return 0; }

無名管道(pipe)通訊

這個程式用無名管道實現命令 cat etc passwd grep root 其實在終端命令中 就是乙個管道 cat etc passwd會把結果列印到標準輸出 grep root 會把結果從標準輸入 實現流程 1.父程序生產兩個子程序 程序扇的概念 2.子程序a a 把標準輸出定位到管道寫端,因為...

無名管道(PIPE)與 有名管道(FIFO)

更多資料 我的目錄 1 無名管道的建立 標頭檔案 include 函式原型 int pipe int pipefd 2 引數 pipefd 乙個至少具有兩個int型資料的陣列 pipefd 0 讀端的檔案描述符,只能讀取管道中的資訊 pipefd 1 寫端的檔案描述符,只能往管道中寫入資訊 返回值 ...

程序間通訊 無名管道PIPE

無名管道pipe 僅在記憶體中存在,檔案系統不可見 無名 有名 管道 管道是一種程序間通訊機制,好比乙個管子,一邊乙個口,乙個往裡放,另一頭可以往出取,操作是雙向的 無名管道特點 只能用於有親緣關係的近緣之間的通訊 單工的通訊模式,具有固定的讀端和寫段 無名管道建立時會返回兩個檔案描述符,分別用於讀...