一、定義
管道是單向的、先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二、無名管道
int pipe(int fd[2]);三、有名管道:fifo其中,fd[0]用於讀管道,fd[1]用於寫管道。若成功則返回零,否則返回-1,錯誤原因存於errno中。
int mkfifo(const char* pathname,mode_t mode)例子:open時使用o_nonblock,訪問要求無法滿足則立即出錯返回。erron是enxio。
4、管道關閉:用close()關閉相應的檔案描述符即可。fread.c //讀檔案
#include#include#define fifo "myfifo"
main()
fd=open(fifo,o_rdonly|o_nonblock); //設定非阻塞開啟,否則當沒有輸入時,會阻塞在read函式
int num;
while(1)
printf("read %d in fifo , it's %s",num,buff);
sleep(1);
}}fwrite.c //寫檔案
#include#include#include#define fifo "myfifo"
main()
fd=open(fifo,o_wronly);
int num;
num=write(fd,buff,strlen(buff));
printf("%d char is written! it's %s\n",num,buff);
}
Linux管道通訊
現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...
linux 管道通訊
無名管道 1 管道是半雙工的,只能支援資料的單向流動 兩程序間需要通訊時需要建立起兩個管道 2 使用無名管道通訊的程序必須擁有公共祖先程序 pipe 1 標頭檔案 include 2 定義函式 int pipe int filedes 2 3 函式說明 pipe 會建立管道,並將檔案描述詞由引數fi...
Linux 管道通訊
一 通訊的意義 1 傳輸資料 程序之間的通訊 2 共享資源 不同程序之間共享同一資源 3 事件通知 乙個程序向另乙個或另一組程序傳送訊息通知 4 程序控制 如debug程序等需要完全控制另乙個程序的執行,即能攔截程序操作並知曉其狀態 二 通訊的方式 1 無名管道 pipe 使用檔案操作函式 read...