和匿名管道學習方法相同,先過一遍基礎
有名管道: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...