C语言命名管道open阻塞的原因与解决方法

C语言命名管道open阻塞的原因与解决方法

open()的第一个参数是文件路径,第二个参数是打开的文件的读写方式(只写,只读,读写)与堵塞/非堵塞设置。

由于open函数的第二个参数如果加上O_NONBLOCK非堵塞,则会在执行open的时候立即返回,若出错则会设置errno。本话题旨在解决不设置O_NONBLOCK非堵塞时出现的堵塞情况分析。

查阅博客资料,发现有关读写打开的堵塞在此不再赘述,请移步博客连接:
http://blog.csdn.net/men_wen/article/details/59158365

若非上述原因导致的open堵塞,那就是open的第一个参数导致的原因,即文件路径。(个人在此处被某博客误导,后才找到的原因)

错误的文件路径打开方式:

char *FIFO = "/tmp/myfifo"
int fd;
fd = open(FIFO,O_WRONLY);

正确的文件路径打开方式:

#define FIFO "/tmp/myfifo"
int fd;
fd = open(FIFO,O_WRONLY);

那这个问题其实是归类到open的运用上。
原因是:char *FIFO = “/tmp/myfifo”,放入open之后实际上是将没有双引号的/tmp/myfifo放到了第一个参数的位置上,出现了问题,导致了open堵塞。

阿猪米德
2019.05.20于湖北武汉

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值