函式
#include
int pipe(int filedes[2]);
描述pipe()函式建立乙個管道和指向該管道的一對檔案描述符,並且將檔案描述符儲存到檔案描述符陣列filedes中。其中filedes[0]為讀端,filedes[1]為寫端。
返回值0 – 管道建立成功;
-1 – 管道建立失敗,同時errno置位;
錯誤指示
efault – 無效的輸入引數filedes;
emfile – 達到當前程序允許的檔案描述符最大值;
enfile – 達到系統允許的開啟檔案的最大數;
例項下邊的例子首先建立乙個管道,然後通過fork()建立當先程序的子程序。接著每個程序關閉讀寫管道不需要的檔案描述符。子程序在當前路徑下執行「ls –a」命令,通過將管道寫描述符fd[1]複製成標準輸出,將命令執行輸出寫到管道;父程序通過fd[0]讀取管道資料並顯示。
#include #include #include #include #include #include int main(int argc, char *argv);
int read_count = 0;
int status = 0;
//建立管道
if (pipe(fd) < 0)
//建立子程序
if ((pid = fork()) < 0)
//子程序操作
if (pid == 0)
//close fd[1],標準輸出即為fd[1]
close(fd[1]);
} //執行命令
status = system("ls –a");
if (status == -1)
}else
}
例項 Linux管道pipe的使用
例項 linux管道pipe的使用 moakap總結 函式 include int pipe int filedes 2 描述 pipe 函式建立乙個管道和指向該管道的一對檔案描述符,並且將檔案描述符儲存到檔案描述符陣列filedes中。其中filedes 0 為讀端,filedes 1 為寫端。返...
linux管道通訊(pipe)
linux pipe適合於父子程序之間進行通訊。如下面 所示 include include include int main create sub process pid fork if 1 pid else if 0 pid else return 0 當呼叫fork函式後,fork將會返回兩個...
linux 匿名管道pipe
管道是一種最基本的ipc機制,由pipe函式建立 include int pipe int filedes 2 呼叫pipe函式時在核心中開闢一塊緩衝區 稱為管道 用於通訊,它有乙個讀端乙個寫端,然後通 過filedes引數傳出給使用者程式兩個檔案描述符,filedes 0 指向管道的讀端,file...