1. 程式人生 > >8.程序間通訊:有名管道fifo

8.程序間通訊:有名管道fifo

有名管道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去讀取內容時,程式將會阻塞,等待資料的到來