一. 命名管道(FIFO)简介:
命名管道(FIFO) ,不同于匿名管道,命名管道可以进行“非父/子关系”进程间通信,而且以文件节点的形式在。
下面是一个命名管道文件:
prw-rw-rw- 1 Administrator None 0 Nov 4 07:37 fifo1
p代表的就是管道。命名管道以一种特殊的文件形式存在,在提供管道功能的同时,也具有了普通文件的优点(可以同时被多个进程夹享)。
二. 命名管道(FIFO)mkfifo函数的声明:
mkfifo函数说明:
功能:创建命名管道,即“在文件系统中创建一个文件,该文件用于提供FIFO功能”。
#include
#include
int mkfifo( const char* pathname, mode_t mode );
参数:
第一个参数(pathname)是将要在文件系统中创建的一个专用文件。
第二个参数(mode)用来规定FIFO的读写权限。
返回值:
如果调用成功的话,返回值为0;
三. 实例代码:
下面我们以一个实例来说明如何使用mkfifo函数建一个FIFO,以及进行FIFO的读写。
这里,有两个c文件,分别编译,得到两个可执行程序。一个read ,一个write,分别用于读写。 来看一下运行效果。
在read中,创建管道,并且读取数据; 在write中,向管道写入数据。
FIFO1就是创建的管道,可以看出,它是一个特殊的文件,用p标示。
代码:client_fifo.c
![314f7943087e92ab88a903a78976c58d.png](https://img-blog.csdnimg.cn/img_convert/314f7943087e92ab88a903a78976c58d.png)
read fifo, 代码:client_fifo.c
write_fifo.c:
![a30e69d69dbc619f277975f6f334d754.png](https://img-blog.csdnimg.cn/img_convert/a30e69d69dbc619f277975f6f334d754.png)
writre fifo write_fifo.c
四:运行结果:
![d5bb5eba47f0d82c27ed3223e2ba53bb.png](https://img-blog.csdnimg.cn/img_convert/d5bb5eba47f0d82c27ed3223e2ba53bb.png)
运行结果:一个读,一个写