基于管道的进程通信实验_Linux系统编程1.5:进程间通信_命名管道FIFO

一. 命名管道(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

read fifo, 代码:client_fifo.c

write_fifo.c:

a30e69d69dbc619f277975f6f334d754.png

writre fifo write_fifo.c

四:运行结果:

d5bb5eba47f0d82c27ed3223e2ba53bb.png

运行结果:一个读,一个写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值