V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
lonisletend
V2EX  ›  Linux

TLPI 关于文件控制操作 fcntl()的一个问题

  •  
  •   lonisletend · 2018-05-03 12:16:47 +08:00 · 1978 次点击
    这是一个创建于 2156 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在啃 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 希望路过的大佬帮忙看看,给点关键词也是可以的,谢谢啦!

    2 条回复    2018-05-03 12:41:34 +08:00
    exch4nge
        1
    exch4nge  
       2018-05-03 12:27:04 +08:00   ❤️ 2
    虽然不知道书里怎么讲的,不过你查一下 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) 会被忽略。
    lonisletend
        2
    lonisletend  
    OP
       2018-05-03 12:41:34 +08:00 via Android
    @exch4nge 是,书上也有这句话,怪我没仔细看,谢谢提醒!而且我的代码里没有重新获取 flags,导致输出了 writable,这回明白了,还是谢谢你!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1594 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:53 · PVG 00:53 · LAX 09:53 · JFK 12:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.