Linux系統程式設計之管道通訊

2021-10-10 01:09:57 字數 1098 閱讀 8333

@toc

侷限性

資料自己讀不能自己寫。

資料一旦被讀走,便不在管道中存在,不可反覆讀取。

由於管道採用半雙工通訊方式。因此,資料只能在乙個方向上流動。

. 只能在有公共祖先的程序間使用管道。

pipe的demo:

#include

#include

#include

#include

#include

#include

intmain()

pid_t pid =

fork()

;if(pid <0)

else

if(pid >0)

else

return0;

}

讀端兼建立命名管道:

#include

#include

#include

#include

#include

#include

intmain()

;int n_read;if(

(mkfifo

("./file"

,0600)==

-1)&& errno!=eexist)

int fd =

open

("./file"

,o_rdonly)

;printf

("open success\n");

while(1

)close

(fd)

;return0;

}

寫端:

#include

#include

#include

#include

#include

#include

#include

intmain()

}close

(fd)

;return0;

}

Linux系統程式設計之管道通訊

int pipe fd 2 fd 0 read fd 1 write fork 管道一般讀寫行為 讀 資料 位元組數 無資料寫端全部關閉 read 0 讀到結尾 仍有寫端開啟 阻塞等待 寫 讀端全閉關 程式異常終止 sigpipe 讀端仍有開啟 管道寫滿 阻塞等待 未滿 返回實際寫入的位元組數.li...

Linux系統程式設計之FIFO通訊

fifo 有名管道 應用於非血緣關係程序間 不能反覆讀取 例如 04 fifo w.c include include include include include include int main 當前目錄有乙個myfifo檔案 開啟fifo檔案 printf begin write.n int...

Linux系統程式設計 程序間通訊 命名管道

命名管道,意思就是給他指明了名字,他打破了匿名管道只能具有親緣關係之間進行通訊的缺陷,它是一種特殊的 檔案 命名管道提供了乙個路徑名與之關聯,以 fifo 的檔案形式存在於檔案系統中,所以當兩個不具有親緣關係程序要通訊時,只需要訪問路徑名即可。1 fifo 在檔案系統中作為乙個特殊的檔案而存在,但 ...