有名管道
使用函数:mkfifo
头文件:
#include <sys/types.h>
#include <sys/state.h>
函数原型:
int mkfifo(const char *filename, mode_t mode)
返回值:
成功:0
失败:-1
特点
- 有文件名,可以使用open函数打开
- 任意进程间数据传输
- write和read操作可能会阻塞进程(数据为满使用write会阻塞,read时数据为空也会阻塞)
- write具有“原子性”,空间足够时才会写入,保证数据完整性
使用步骤
- 第一个进程mkfifo有名管道
- open有名管道,write/read数据
- close有名管道
- 第二个进程open有名管道,read/write数据
- close有名管道
测试代码:
写函数:
读函数:
(在虚拟机中新建两个终端然后分别执行,先执行fifo_read程序,然后在执行fifo_write程序,并且执行fifo_write程序增加一段字符串参数)