技术解析

TLPI 关于文件控制操作 fcntl()的一个问题
0
2021-06-23 13:13:36
idczone

最近在啃 tlpi,第五章介绍了文件控制操作,fcntl()的使用,所以写了个小栗子试试看,结果和我预期的不一样。代码如下图: 主要就是以只读方式打开文件,然后判断是否可写,不可写的话,修改文件的访问模式为读写,最后 write()随便写一点进去,问题是这么做最后还是不能写入。 2018-05-03 11-48-37 的屏幕截图.png

2018-05-03 11-49-22 的屏幕截图.png 如果是以读写方式打开的话是可以直接写的。比如: 2018-05-03 11-51-59 的屏幕截图.png

2018-05-03 11-52-49 的屏幕截图.png 希望路过的大佬帮忙看看,给点关键词也是可以的,谢谢啦!


虽然不知道书里怎么讲的,不过你查一下 fcntl 的 API 文档,里面明确写着当用 F_SETFL 时 File access mode (O_RDONLY, O_WRONLY, O_RDWR) and file creation flags (i.e., O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC) 会被忽略。

是,书上也有这句话,怪我没仔细看,谢谢提醒!而且我的代码里没有重新获取 flags,导致输出了 writable,这回明白了,还是谢谢你!

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服