只能在具有親緣關係的程序式之間進行通訊。
int pipe(int pipefd[2])
#include
#include
#include
#include
intmain()
;int ret =
pipe
(pipefd);if
(ret <0)
pid_t pid =
fork()
;if(pid ==0)
else
if(pid >0)
return0;
}
支援同乙個主機中的不同進行之間進行訪問。
int mkfifo(char* name, mode_t mode)
//管道名稱與許可權。
#include
#include
#include
#include
#include
//命名管道
#include
//錯誤處理
#include
//檔案操作
intmain()
int fd =
open
("./test.fifo"
,o_rdonly)
;//以唯讀的方式開啟檔案
if(fd <0)
return0;
}
注意
檔案以唯讀的方式開啟,則會被阻塞,直到檔案用寫的方式進行開啟。
檔案以只寫的方式開啟,則會被阻塞,直到檔案用讀的方式開啟。
管道自帶同步與互斥
同步:通過條件判斷實現對臨界資源訪問的時序合理性。體現在管道中為管道的讀寫特性
互斥:通過唯一訪問實現對臨界資源訪問的安全性。管道的讀寫操作在pipe_buf中保證了原子性。
Linux 管道的通訊
utili.h ifndef utili h define utili h include include include include include include include define fifo read readfifo define fifo write writefifo de...
Linux 管道通訊
一 定義 管道是單向的 先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二 無名管道 int pipe int fd 2 其中,fd 0 用於讀管道,fd 1 ...
Linux管道通訊
現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...