程序間通訊(二)有名管道

2021-08-08 06:50:57 字數 749 閱讀 2963

有名管道fifo依賴於檔案系統,使得不僅僅是親緣程序,同主機任意程序間也可實現通訊。

有名管道和普通檔案一樣具有磁碟存放路徑、檔案許可權和其他屬性。

但是有名管道並沒有在磁碟中存放真正的資訊,他儲存的通訊資訊在記憶體中,兩個程序通訊結束後自動消失。

通訊結束後,有名管道的檔案路徑本身仍然存在。

api:

\*建立乙個有名管道*\

#include

#include

int mkfifo(__const char *__path,__mode_t __mode);

建立成功則返回0,否則返回0

親緣關係程序間使用有名管道(讀寫時需要確定對方的存在否則阻塞):

#include 

#include

#include

#include

#include

#include

int main()

pid=fork();

if(pid==0)

else

return

0;}

輸出結果:

to write

(子程序阻塞在write函式)

程序間通訊 有名管道

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

程序間通訊 有名管道

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

程序間通訊 管道(有名管道)

前幾天我們簡單的介紹了程序間通訊的一種渠道 管道,我們有說道管道的概念,管道的通訊原理,還提到了管道的兩種型別 有名管道和無名管道,今天我們就來說說有名管道吧 基本概念 有名管道在檔案目錄中有乙個檔案標示 管道檔案 實際不佔據磁碟空間。資料快取在記憶體上 只有使用時記憶體才開闢,由於在記憶體上,因此...