Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
lonisletend
V2EX  ›  Linux

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

  •  
  •   lonisletend · May 3, 2018 · 2674 views
    This topic created in 2938 days ago, the information mentioned may be changed or developed.

    最近在啃 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 replies    2018-05-03 12:41:34 +08:00
    exch4nge
        1
    exch4nge  
       May 3, 2018   ❤️ 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
       May 3, 2018 via Android
    @exch4nge 是,书上也有这句话,怪我没仔细看,谢谢提醒!而且我的代码里没有重新获取 flags,导致输出了 writable,这回明白了,还是谢谢你!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3616 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 260ms · UTC 05:05 · PVG 13:05 · LAX 22:05 · JFK 01:05
    ♥ Do have faith in what you're doing.