Linux 使用有名管道(FIFO)進行通訊

2021-09-22 02:31:00 字數 1064 閱讀 8069

和匿名管道學習方法相同,先過一遍基礎

有名管道:fifo 用ls -l命令可找到類似 ->p 的就是管道

與匿名管道相同,都屬於偽檔案,不占用磁碟空間。在記憶體中有乙個緩衝區

通訊方式:半雙工

用於沒有血緣關係的兩個程序間通訊

建立方式:

(1)命令:mkfifo 管道名

(2)函式:mkfifo

fifo檔案可以使用io函式進行操作:open/close,write/read,不能執行lseek操作

write_fifo.c

#include #include #include #include #include #include int main(int argc,char *ar**)

//判斷檔案是否存在

int ret = access(ar**[1],f_ok);

if(ret == -1)

printf("有名管道%s建立成功\n",ar**[1]);

}int fd = open(ar**[1],o_wronly);

if(fd == -1)

char *p = "hello world!";

while(1)

close(fd);

return 0;

}

read_fifo.c

#include #include #include #include #include #include int main(int argc,char *ar**)

//判斷檔案是否存在

int ret = access(ar**[1],f_ok);

if(ret == -1)

printf("有名管道%s建立成功\n",ar**[1]);

}int fd = open(ar**[1],o_wronly);

if(fd == -1)

char buf[512];

while(1)

close(fd);

return 0;

}

linux 有名管道(FIFO)

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

FIFO 有名管道

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

21 有名管道fifo

1.特點 有名管道 在磁碟上有這樣乙個檔案,可通過命令ls l檢視字首帶p的檔案 偽檔案,在磁碟上大小永遠為0 在核心中有乙個對應的緩衝區 半雙工的通訊方式 預設阻塞 2.使用場景 沒有血緣關係的程序間通訊 3.建立方式 命令 mkfifo 管道名 函式 mkfifo 類似於mkdir 4.fifo...