Linux系統程式設計 fifo命名管道

2021-10-11 11:18:45 字數 967 閱讀 2981

fifo也被稱為命名管道。未命名的管道只能在兩個相關的程序之間使用,而且這兩個程序還有乙個共同的建立了他們的祖先程序,但是fifo,不相關的程序也能交換資料。

fifo是一種檔案型別,fifo的建立有兩種方式。

1.直接用命令建立 mkfifo

2.利用函式建立

int mkfifo(const

char

*pathname,mode_t,mode)

下面用乙個案例演示從乙個程序傳送資料到另外乙個不相干的程序。

傳送端:

#include

#include

#include

#include

#include

void

sys_err

(const

char

*str)

intmain()

i=0;

while(1

)close

(fd)

;return0;

}

接收端:

#include

#include

#include

#include

void

sys_err

(const

char

*str)

intmain()

while(1

)//迴圈將讀取的資料寫到平面鏡上去

write

(stdout_fileno,buf,len);}

return0;

}

開啟兩個終端乙個執行寫端,另乙個執行讀端,在讀端會將接收到的資料輸出到螢幕上,如下所示

Linux系統程式設計 管道和FIFO

ls wc l 為執行上述命令,shell建立了兩個程序來分別執行ls和wc。通過管道連線兩個程序。管道是單向的,允許資料從乙個程序流向另乙個程序。管道是乙個位元組流意味著在使用管道時不存在訊息或訊息邊界。從管道中讀取資料的程序可以讀取任意大小的資料塊,而不管寫入程序寫入管道的資料塊大小。通過管道的...

Linux系統程式設計之FIFO通訊

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

linux作業系統程式設計 fifo複雜C S模型

程式要求 程式如下 1 server.c include include include include include include include include typedef struct 定義乙個資料結構用於fifo中資料傳送 package static void child read...