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