linux程序間通訊(命名管道)

2021-07-22 08:53:55 字數 1124 閱讀 5187

在處理程序間通訊的問題時,匿名管道只能在有親緣關係的程序中進行通訊。如何做到在任意兩個程序之間通訊,這就要用到命名管道。

命名管道也被稱為fifo檔案,它是一種特殊型別的檔案,在檔案系統中以檔案的形式存在,它的行為和匿名管道類似。可以使用mkfifo函式來建立乙個命名管道。

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

filename指定了檔名,mode指定了讀寫許可權。

server.c:

#include#include#include#include#include#include#define _path_ "/tmp/file.tmp"

#define _size_ 100

int main()

char buf[_size_];

memset(buf,'\0',sizeof(buf));

while(1)

printf("%s\n",buf);

} close(fd);

return 0;

}

client.c:

#include#include#include#include#include#include#define _path_ "/tmp/file.tmp"

#define _size_ 100

int main()

int fd = open(_path_,o_wronly);

if(fd < 0)

char buf[_size_];

memset(buf,'\0',sizeof(buf));

while(1) }

close(fd);

return 0;

}

執行結果:用client傳送資料,用server接受資料

總結:使用命名管道可以實現任意兩個程序間的通訊,檔案系統中的路徑名是全域性的,各程序都可以訪問,因此可以用檔案系統中的路徑名來標識乙個ipc通道。

linux中一切皆檔案,可以通過檔案操作對命名管道進行使用。

Linux程序間通訊 命名管道

ipc 命名管道 一 原理 管道的乙個不足之處是沒有名字,因此,只能用於具有親緣關係的程序間通訊,在命名管道 named pip 或fifo 提出後,該限制得到了克服。fifo 不同於管道之處 在於它提供乙個路徑名與之關聯,以fifo的檔案形式儲存於檔案系統中 命名管道是乙個裝置檔案,因此,即使程序...

linux程序間通訊 命名管道

命名管道也被稱為fifo檔案,它是一種特殊型別的檔案,它在檔案系統中以檔名的形式存在,但是它的行為卻和之前所講的沒有名字的管道 匿名管道 類似。有名管道是有名有形的,為了使用這種管道linux中設立了乙個專門的特殊檔案系統 管道檔案,它存在於檔案系統中,任何程序可以在任何時候通過有名管道的路徑和檔案...

Linux程序間通訊 命名管道

我們知道,匿名管道只能用於父子關係的程序之間。那麼沒有這種關係的程序之間該如何進行資料傳遞呢?1.什麼是命名管道 匿名管道是在快取中開闢的輸出和輸入檔案流的空間,只能用於父子關係的程序之間。因為父子程序的輸入和輸出檔案描述符是一致的。命名管道是一種實際存在的fifo檔案,稱作 管道檔案 用於不同程序...