程序間通訊 命名管道

2021-08-01 02:20:01 字數 1018 閱讀 2485

程序間通訊的本質是不同的程序看到了同乙份公共的資源。

而管道的⼀乙個不⾜足之處是沒有名字,因此,只能⽤用於具有親緣關係的程序間通訊,在命名管道(named pipe或fifo)提出後,該限制得到了克服。fifo不同於管道之處在於它提供⼀乙個路徑名與之關聯,以fifo的⽂檔案形式儲存於⽂檔案系統中。命名管道是⼀乙個裝置⽂檔案,因此,即使程序與建立fifo的程序不存在親緣關係,只要可以訪問該路徑,就能夠通過fifo相互通訊。值得注意的是,fifo(first input first output)總是按照先進先出的原則⼯工作,第⼀乙個被寫⼊入的資料將⾸首先從管道中讀出。

客戶端

#include

#include

#include

#include

#include

#include

#include

int main()

int fd=open("./mypipe",o_rdonly);

if(fd<0)

char buf[1024];

while(1)//write

else

if(s==0)

else

}return

0;}

伺服器端

程序間通訊 命名管道

命名管道,和匿名管道,有了自己的名字,有了名字就可以操作。所以他不在侷限於有血緣關係的兩個程序之間,適用於任意的兩個程序。實際上和匿名管道一樣是一塊核心中的快取,和匿名管道不一樣的是,他在檔案系統中多了檔案,而匿名管道的檔案只存在與記憶體中,但是命名管道的檔案雖然存在,有在核心資料結構中有自己的環境...

程序間通訊 命名管道

命名管道 命名管道是乙個存在於檔案系統的乙個特殊檔案,命名管道和匿名管道區別 建立命名管道 從命令列建立 mkfifo filename 在程式中建立 函式原型 int mkfifo const char filename,mode t mode 返回值 成功返回 如果檔案已經存在返回 errno為...

程序間通訊 命名管道

規定建立命名管道的程式是服務端 本程式服務端負責接收資料並列印 include include bool server dword dwread 0 建立雙向管道 handle hpipe createnamedpipea pipe hambaga pipe access duplex,pipe t...