管道pipe通訊 命令列mkfifo與函式定義

2021-10-03 07:27:26 字數 2438 閱讀 3463

在命令列中 定義管道檔案 1.pipe 2.pipe

mkfifo 1.pipe 2.pipe

用函式定義管道 mkfifo ()

ex: mkfifo ( 「pipename」 , 0777);

一端寫,一端讀檔案

管道可被視為一段記憶體,資料結構是為迴圈鍊錶,有一定的容量限制

#include

#include

#include

#include

#include

intmain

(int argc ,

char

* ar**)

int fdr =

open

(ar**[1]

,o_rdonly)

;int fdw=

open

(ar**[2]

,o_wronly)

;char buf[

128]=;

while(1

)}

#include

#include

#include

#include

#include

intmain

(int argc ,

char

* ar**)

int fdw =

open

(ar**[1]

,o_wronly)

;int fdr=

open

(ar**[2]

,o_rdonly)

;char buf[

128]=;

while(1

)}

pipe的乙個特性

兩個程序,乙個讀的程序,乙個寫的程序,只有兩個程序同時操作乙個管道的時候管道才會傳送資料

write.c 寫程序

#include

#include

#include

intmain

(int argc ,

char

**ar**)

int fdw =

open

(ar**[1]

,o_wronly)

;printf

("i am writer fdw \n");

//如果沒有乙個程序從另一邊開啟管道,對管道進行讀,則不會執行列印

printf

("finish\n");

write

(fdw,

"hello world",11

);sleep(10

);close

(fdw)

;return0;

}

read.c 讀管道

int

main

(int argc ,

char

**ar**)

fdr =

open

(ar**[1]

,o_rdonly)

;printf

("i am read\n");

char buf[

120]=;

read

(fdr,buf ,

sizeof

(buf));

printf

("buf : %s\n"

,buf)

;close

(fdr)

;return0;

}

測試

一端寫,一端讀檔案

必須開啟兩端的埠才能進行,不然會被阻塞,在兩個程序中分別開啟讀埠和寫埠,或者再乙個程序中 以o_rdwr的方式開啟

從乙個關閉的管道中讀取檔案, 會發生什麼呢,讀取到0 不停的列印

// write.c 開啟一段時間結束

#include

#include

#include

intmain

(int argc ,

char

** ar**)

printf

("hello world\n");

return0;

}

不斷讀取buf  ret返回值為 0 ,buf 讀到的為空

#include

#include

#include

#include

#include

intmain

(int argc ,

char

**ar** )

;while(1

)close

(fdr)

;printf

("hello world\n");

return0;

}

pipe管道通訊

pipe函式是用來建立管道的,當它建立成功會返回兩個檔案描述符,0是讀,1是寫 在用管道時,當我們使用讀端就要關閉寫,使用寫端就要關閉讀的功能。include include include include int main double shou 2 int i 0 int ret double ...

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將會返回兩個...

無名管道(pipe)通訊

這個程式用無名管道實現命令 cat etc passwd grep root 其實在終端命令中 就是乙個管道 cat etc passwd會把結果列印到標準輸出 grep root 會把結果從標準輸入 實現流程 1.父程序生產兩個子程序 程序扇的概念 2.子程序a a 把標準輸出定位到管道寫端,因為...