一.概念
函数形式:int mkfifo(const char \*filename,mode_t mode);
功能:创建管道文件
参数:管道文件文件名\路径,权限,创建的文件权限仍然和umask有关系。
返回值:创建成功返回0,创建失败返回-1。
mkfifo(”/home/super/myfifo“,0777);
pwd可以查看当前所在文件路径
1.特点
有名管道
在磁盘上有这样一个文件 ls -l ->p
也是一个伪文件,在磁盘大小永久为0
数据存在内核中有一个对应的缓冲区
半双工通信方式
2.使用场景
没有血缘关系的进程间通信
3.创建方式
命令:mkfifo 管道名
函数:mkfifo
用man 3 mkfifo 查看其头文件
4.fifo文件可以使用io函数进程操作
open/close
read/write
不能执行lseek操作
通过写代码可以看到,我们生成的myfifo文件类型有一个P,这个说明它是一个管道文件类型。
5.有名管道的进程间通信
写一个管道read文件,read文件里建立有名管道myfifo,之后通过open函数读取管道文件里的内容,并且打印出来。
建立wirte文件,往管道里写数据
在一个终端执行read文件,因为此时里面没有内容所以会一直在运行,打开另一个终端,执行write文件,之后read就会打印出写入的字符有11个内容为hello world