實現思路:
利用程序從管道讀資料時若沒有其他程序進行寫資料,那麼程序會阻塞這一原理。實現write
程序只要定時(3s)向管道內寫資料,read
程序就會在管道內有資料後讀出資料並顯示。 當關閉write
程序後,read
程序不會再阻塞,此時會不停地從管道中讀出空資料,所以判斷當從管道內讀出空資料時,read
程序退出。
read.c:
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
;if(unlink
("my_fifo")!=
0)if(
mkfifo
("my_fifo"
, s_irusr|s_iwusr)!=0
)
fd =
open
("my_fifo"
, o_rdonly)
;while(1
)return0;
}
write.c
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
return0;
}
執行截圖:
}執行截圖:
Linux 管道通訊
一 定義 管道是單向的 先進先出的。它將乙個程式的輸入和另乙個程式的輸出連線起來。資料被乙個程序讀出後,將被從管道中刪除。分為無名和有名管道兩種。前者用於父程序和子程序間的通訊,後者用於同一系統的兩個程序間通訊。二 無名管道 int pipe int fd 2 其中,fd 0 用於讀管道,fd 1 ...
Linux管道通訊
現在在linux 中使用較多的程序間通訊方式主要有以下幾種。1 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。2 訊號 signal 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊...
pipe管道通訊
pipe函式是用來建立管道的,當它建立成功會返回兩個檔案描述符,0是讀,1是寫 在用管道時,當我們使用讀端就要關閉寫,使用寫端就要關閉讀的功能。include include include include int main double shou 2 int i 0 int ret double ...