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

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

  •  
  •   lonisletend · 73 天前 · 699 次点击
    这是一个创建于 73 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在啃 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
        1
    exch4nge   73 天前   ♥ 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) 会被忽略。
        2
    lonisletend   73 天前 via Android
    @exch4nge 是,书上也有这句话,怪我没仔细看,谢谢提醒!而且我的代码里没有重新获取 flags,导致输出了 writable,这回明白了,还是谢谢你!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   763 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 23:09 · PVG 07:09 · LAX 16:09 · JFK 19:09
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1