8.程序間通訊:有名管道fifo
阿新 • • 發佈:2018-11-12
有名管道fifo
1.特點: 半雙工 有名管道 在磁碟上有這樣一個檔案ls -l ->p 偽檔案,在磁碟大小永遠為0,資料實際上存放在核心中的緩衝區中 2.使用場景 無血緣關係的程序間通訊(兩個不相干的程序) 3.建立方式 1.命令:mkfifo 管道名 2.函式:int mkfifo(const char *pathname, mode_t mode); 4.fifo檔案可以使用IO函式程序操作 open/close read/write 不能執行lseek操作 5.程序間通訊(虛擬碼) [1]已經建立了fifo檔案:myfifo [2]兩個不相干的程序A(read_fifo.c)和B(write_fifo.c) read_fifo.c--->read int fd=open("myfifo",O_RDONLY); read(fd,buf,sizeof(buf)); close(fd); write_fifo.c--->write int fd=open("myfifo",O_WRONLY); write(fd,"hello world",11); close(fd); fifo檔案與普通檔案的區別: fifo檔案預設是有"阻塞"屬性的,而普通檔案預設是不具有阻塞屬性的 因此:fifo檔案中沒有寫入資料時,當執行read_fifo.c去讀取內容時,程式將會阻塞,等待資料的到來