LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1048|回复: 2

fcntl问题请教

[复制链接]
发表于 2005-10-10 23:16:02 | 显示全部楼层 |阅读模式
请问对fifo文件描述符,能否用fcntl修改O_NONBLOCK属性?
例如
int fd;
int flags
fd=open("/tm/fifo",O_RDONLY|O_NONBLOCK);
flags=fcntl(fd,F_GETFL);
fcntl(fd,F_SETFL,flags&~O_NONBLOCK);
我试了一下,文件还是nonblock属性的,修改无效啊?
谢谢
发表于 2005-10-11 10:11:24 | 显示全部楼层
fcntl(fd,F_SETFL,flags&~O_NONBLOCK);  ===>fcntl(fd,F_SETFL,flags|~O_NONBLOCK);
---------------------------------------------
看错了,回复无效,当我没说
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-12 17:15:09 | 显示全部楼层
我得猜想是这样:
如果文件用open打开时的属性是block时,可以用fcntl修改成non_block型;
如果用open打开时的属性是nonblock的,则虽然用fcntl能够修改成block(fcntl的返回值是修改成功时的返回值),但是实际上文件还是nonblock。因为我用read读的时候还是非阻塞的。

验证了一下,好像是这样的
不知道有没有人也试过?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表