mkfifo创建管道,调用open打开失败(O_WRONLY|O_NONBLOCK)

1)代码如下:

mkfifo(FIFO_DIR,0666);//成功

open(FIFO_DIR,O_WRONLY|NONBLOCK);//失败

2)原因:

用了 nonblock 方式去打开fifo的写端,此时fifo的读端没有人open,所以一定会返回失败。必须先有人以读的方式打开fifo后,才能以nonblock方式打开写。

3)解决办法:

1)以读写都支持的方式open:open(FIFO_DIR,O_RDWR|NONBLOCK);//成功

或者

2)仍然以只写方式打开,但是去掉 O_NONBLOCK 参数:open(FIFO_DIR,O_WRONLY);

或者

3)确保读端先打开,然后再打开写端:先open(FIFO_DIR,O_RDONLY|NONBLOCK),再open(FIFO_DIR,O_WRONLY|NONBLOCK)。

来自:上海代数律动技术有限公司

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值