一.fifo介紹
fifo函式用於建立命名管道,作用與匿名管道相同,不過可以在不同的程序之間使用,相當於對乙個普通檔案進行讀寫操作就可以了。
這個管道檔案是任何有許可權的程序都可以使用的,兩端都像操作乙個普通檔案一樣對它進行開啟、讀寫、關閉動作就可以了,只要一端寫入資料另一端就可以都出來。
#include #include int mkfifo(const char *pathname, mode_t mode);
引數列表:
pathname:管道檔案的路徑和檔名。
mode:建立管道檔案的許可權。傳入的 mode 值要與系統的 umask 值做運算:(mode & ~umask)
返回值:成功返回 0,失敗返回 -1 並設定 errno。
二. **實現
父程序先建立了兩個程序,然後,直接退出,兩個子程序之間沒有關係,但可以使用fifo來進行通訊。
#include#include#include#include#include#includeint main(int argc,char *argv)
fflush(null);
if((pid=fork())<0)
else if(pid==0)
write(fifofd,"hello!",7);
sleep(1);
read(fifofd,buf,bufsiz);
//fputs(buf,stdout);
printf("child 1 recieve data:%s\n",buf);
close(fifofd);
exit(0);
} else
else if(pid==0)
read(fifofd,buf,bufsiz);
//fputs(buf,stdout);
printf("child 2 recieve data:%s\n",buf);
write(fifofd,"hi,how are you",15);
close(fifofd);
exit(0);
} else
}}
程序間通訊之FIFO
管道使用起來很方便,但是沒有名字,因此只能用於具有親緣關係的程序之間進行通訊,而有名管道就克服了這一點,fifo管道提供了乙個路徑名與之相對應,即使程序不是親緣程序,只要能訪問到該路徑就能使用fifo進行通訊。有名管道的建立 include include int mkfifo const char...
程序間通訊之FIFO
fifo有時被稱為命名管道。管道只能由相關程序使用,這些相關程序的共同祖先程序建立了管道。但是,通過fifo,不相關的程序也能交換資料。fifo是一種檔案型別 參考結構 成員st mode的編碼指明檔案是否是fifo型別。可以用s isfifo 巨集對此進行測試。建立fifo類似於建立檔案。確實,f...
程序通訊FIFO
fifo fifo常被稱為命名管道,以區分管道 pipe 管道 pipe 只能用於 有血緣關係 的程序間。但通過fifo,不相關的程序也能交換資料。fifo是linux基礎檔案型別中的一種。但,fifo檔案在磁碟上沒有資料塊,僅僅用來標識核心中一條通道。各程序可以開啟這個檔案進行read write...