最近在啃 tlpi,第五章介绍了文件控制操作,fcntl()的使用,所以写了个小栗子试试看,结果和我预期的不一样。代码如下图:
主要就是以只读方式打开文件,然后判断是否可写,不可写的话,修改文件的访问模式为读写,最后 write()随便写一点进去,问题是这么做最后还是不能写入。
如果是以读写方式打开的话是可以直接写的。比如:
希望路过的大佬帮忙看看,给点关键词也是可以的,谢谢啦!
虽然不知道书里怎么讲的,不过你查一下 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,这回明白了,还是谢谢你!