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