第12課 有名管道通訊

2022-08-11 14:15:15 字數 1374 閱讀 9404

1.有名管道:又稱為fifo檔案。

2.man命令:1.系統命令,2.系統呼叫,3庫函式

3.函式學習

5.2建立有名管道

5.2.1函式名

mkfifo

5.2.2 函式原形

int mkfifo(const char *pathname, mode_t mode);

5.2.3 函式功能

建立乙個fifo檔案(有名管道)

5.2.4 所屬標頭檔案

5.2.5 返回值

成功:0

失敗:-1

5.2.6 引數說明

pathname:要建立的fifo檔案的名字(含路徑)

mode:訪問許可權,數字形式表示就可以(0666)

5.3刪除有名管道5.3.1函式名

unlink5.3.2 函式原形

int unlink(const char *pathname);5.3.3 函式功能

刪除檔案5.3.4 所屬標頭檔案

5.3.5 返回值

成功:0失敗:-1

5.3.6 引數說明pathname:用來指明要刪除的檔名(含路徑)

4.fifo檔案和普通檔案的區別

(1)寫入的時候是只能只寫開啟(2)讀取的時候是唯讀開啟

(3)讀取以後內容不再存在

其他的操作就用普通檔案的操作。5.綜合例項

(1)寫檔案程序---》建立fifo

---》開啟並寫入---》關閉

(2)讀檔案程序---》讀取檔案

---》列印---》關閉

---》刪除有名管道

6.如果沒有讀程序訪問fifo,則寫程序會被阻塞,直到有程序訪問該fifo,才會結束寫程序。

程序通訊 有名管道

無名管道只能由父子程序使用 但是通過命名管道,不相關的程序也能交換資料。建立管道mkfifo 開啟管道open 讀管道read 寫管道write 關閉管道close 刪除管道unlink 函式作用 建立有名管道 函式原型 int mkfifo const char pathname,mode t m...

程序間通訊 有名管道

無名管道,由於沒有名字,只能用於親緣關係的程序間通訊.為了克服這個缺點,提出了有名管道 fifo fifo不同於無名管道之處在於它提供了乙個路徑名與之關聯,以fifo的檔案形式存在於檔案系統中,這樣,即使與fifo的建立程序不存在親緣關係的程序,只要可以訪問該路徑,就能夠彼此通過fifo相互通訊,因...

程序間通訊 有名管道

mkfifo test 這條命令建立了乙個名字為 test 的命名管道。接下來我們用乙個程序向這個管道裡面寫資料,然後有另外乙個程序把裡面的資料讀出來。echo this is a pipe test 寫資料 這個時候管道的內容沒有被讀出的話,那麼這個命令就會一直停在這裡,只有當另外乙個程序把 te...