linux有名管道的fifo的建立和使用

2021-09-29 10:16:59 字數 787 閱讀 6017

#include

#include

int

mkfifo

(const

char

*pathname, mode_t mode)

;

成功返回0,失敗返回-1並設定errno

pathname 命名管道路徑

建立許可權是(mode & ~umask)的有名管道檔案

解決沒有血緣關係之間的程序的通訊

mkfifo

[管道名稱]

prw-rw-r-- 1 toucheddog toucheddog        0 nov  7 15:27 mfifo
該檔案的型別時p,可以在檔案目錄中看到,大小始終是0

int fd1,fd2;

char buf[

1024];

fd1 =

open

("管道名稱"

,o_wronly)

;//讀管道

fd2 =

open

("管道名稱"

,o_rdonly)

;//寫管道

write

(fd1,

"內容"

,strlen

("內容"))

;read

(fd2,buf,

1024);

//一次性讀取1kb資料

linux 有名管道(FIFO)

管道的緩衝區是有限的 管道制存在於記憶體中,在管道建立時,為緩衝區分配乙個頁面大小 管道所傳送的是無格式位元組流,這就要求管道的讀出方和寫入方必須事先約定好資料的格式,比如多少位元組算作乙個訊息 或命令 或記錄 等等 多個寫程序,乙個讀程序。可以參考我之前的部落格 一旦設定了阻塞標誌,呼叫mkfif...

FIFO 有名管道

有名管道相關的關鍵概念 管道應用的乙個重大限制是它沒有名字,因此,只能用於具有親緣關係的程序間通訊,在有名管道 named pipe或fifo 提出後,該限制得到了克服。fifo不同於管道之處在於它提供乙個路徑名與之關聯,以fifo的檔案形式存在於檔案系統中。這樣,即 使與fifo的建立程序不存在親...

linux系統中的有名管道(FIFO)

無名管道應用的乙個重大限制是它沒有名字,因此,只能用於具有親緣關係的程序間通訊,在有名管道 named pipe或fifo 提出後,該限制得到了克服。fifo不同於管道之處在於它提供乙個路徑名與之關聯,以fifo的檔案形式存在於檔案系統中。這樣,即使與fifo的建立程序不存在親緣關係的程序,只要可以...