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去读取内容时,程序将会阻塞,等待数据的到来

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/83057583