Linux中FIFO管道
介绍:
FIFO被称为命名管道,pipe只能用于有血缘关系的进程间通信,但通过FIFO,不相关的进程也可以进程间通信。
FIFO是linux基础文件类型的一种(文件类型为p),FIFO文件在磁盘上没有数据块,文件大小为0,仅仅表示内核中一条通道。进程可以打开这个文件进行read/write
创建FIFO管道:
- 方式一:使用命令mkfifo 如:mkfifo 管道名
- 方式二:使用函数 int mkfifo(const char*pathname,mode_t mode);
注意:FIFO严格遵循先进先出,对FIFO的读总是从开始处返回数据,对他们写则是把数据添加到末尾。他们不支持lseek(),等文件定位操作
操作:
这是fifo_write.c文件,创建myfifo管道文件,并写入数据。
access函数可以判断文件是否存在,返回值为零则存在。
注意:这个sleep(10)是让这个写进程不结束,如果写进程比读进程提前结束,读进程会读不到内容,一直阻塞。
这是fifo_write.c文件,执行读进程。