• python os.open 用处


    注:os.open 是 POSIX 的低层次的系统调用

      这两天在看shadowsocks的源码学习,看到里面的文件的读写用到了 os.open 而不是平常使用的open.所以,很奇怪。然后,大致发现了这个好处。

    f=open('data.txt','w')

    如果你调用了普通的open,且你本来没有‘data.txt’ 这个文件,那么会自动创建一个‘data.txt’ 的文件。你可以看到默认的权限是:

    -rw-rw-r-- 1 yaoge yaoge    7  5月 11 00:07 data.txt

    但是在这里因为涉及记录shadowsocks的log,应该尽可能的减少权限。

    所以调用os.open 可以自己定义新创建文件的权限。

    import stat
    import os
    fd=os.open('data.txt',os.O_RDWR|os.O_CREAT,
                       stat.S_IRUSR | stat.S_IWUSR)
    os.write(fd,bytes('123456'))

    -rw------- 1 yaoge yaoge    7  5月 11 00:07 data.txt

    其他:

    在源码中还看到一些用法,记录一下

    #在调用exec前,自动帮你关闭文件描述符 就相当于在exec前的代码增加os.close(fd)
    fcntl.fcntl(fd,fcntl.F_SETFD,fcntl.FD_CLOEXEC)

    劝告性锁

    # 互斥锁定#无法建立锁定时,此操作可不被阻断,马上返回进程
    # os.SEEK_SET - 文件的开头, 可以用 0 代替
     fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB,
                     0, 0, os.SEEK_SET)


  • 相关阅读:
    发布时间 sql语句
    Excel中 查找重复数据
    身份证正则表达式
    (转)C#中的委托与事件
    C#中的ForEach
    Ajax请求中,contentType和dataType的区别
    让IIS支持PUT和Delete请求的方法
    Vue.js事件修饰符
    JS阻止默认行为
    关于bindinglist的一点小问题
  • 原文地址:https://www.cnblogs.com/baobaopangzi88/p/5479962.html
Copyright © 2020-2023  润新知