Linux进程间通信—FIFO有名管道

本文介绍了Linux中的FIFO有名管道,这是一种用于进程间通信的特殊文件。讨论了FIFO的创建、打开方式,强调了FIFO打开时的阻塞问题,并提供了读写代码示例,还提到了并发写入时可能出现的数据交错问题及解决方案。
摘要由CSDN通过智能技术生成

Linux进程间通信—FIFO有名管道

有名管道又称FIFO,是一种特殊的文件。FIFO是能够实现在不同进程下的通信,速度极快。在Linux下面一切皆文件,这让许多操作变得更加简单便捷。

(1)FIFO的创建
FIFO的创建可由下面函数来创建
在这里插入图片描述
其中第一个参数*pathname是FIFO创建的路径名,第二参数mode是什么样的读写权限来创建FIFO。
(2)打开FIFO文件
在这里插入图片描述
FIFO文件和其他文件一样也是使用open来打开。但是有几点需要注意:
1、FIFO文件不能够用O_RDWR(可读可写)的方式打开,因为一个FIFO如果以可读可写的方式打开,进程本身会读回写入FIFO中的数据,通常我们使用FIFO是为了实现单向数据的传输。
2、在使用open打开FIFO文件的时候,在选择打开的mode时候,如果选择的是O_NOBLOCK则当open函数打开FIFO是非阻塞的,否则是阻塞的。

(3)关于FIFO的阻塞问题
对于以只读方式(O_RDONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_RDONLY),只有当另一个进程以写方式打开同一个FIFO文件,否则open不会返回句柄;如果open调用是非阻塞的的(即第二个参数为O_RDONLY | O_NON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值