zoukankan      html  css  js  c++  java
  • 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)


  • 相关阅读:
    C#中一些关联名词的含义归纳
    lua杂记
    项目管理工具与常用网站汇总
    SVN用法及常见问题分析
    递归打印lua中的table
    脚本编辑中的一些名词概念
    quick-cocos2d-x lua框架解析(一)对UI进行操作的UiUtil脚本
    lua的table转为excel表格的方法
    前端mvc与mvvm
    ext--创建store
  • 原文地址:https://www.cnblogs.com/baobaopangzi88/p/5479962.html
Copyright © 2011-2022 走看看