C 和 Python 之间的文件锁(flock)兼容性

rph*_*rph 5 c python linux locking

算法的 python 实现是否可以与标准 C 库一起透明地工作?如果我有两个程序,一个是 Python,另一个是 C,尝试获取单个文件的锁会起作用吗?

快速链接:

  1. Python 群:https://docs.python.org/2/library/fcntl.html
  2. Linux 群: http: //linux.die.net/man/2/flock

Mar*_*ers 5

Python 的fcntl库直接构建在标准 C 库之上;所以在Linux上直接fcntl.flock()使用flockC函数

查看fcntl模块的源代码:

#ifdef HAVE_FLOCK
    Py_BEGIN_ALLOW_THREADS
    ret = flock(fd, code);
    Py_END_ALLOW_THREADS
Run Code Online (Sandbox Code Playgroud)

fcntl.flock()文档中也明确说明了这一点:

fcntl.flock(fd, op)
对文件描述符fdfileno()执行锁定操作 op(也接受提供方法的文件对象)。有关详细信息,请参阅 Unix 手册集群(2)。(在某些系统上,此函数是使用 模拟的fcntl()。)

所以是的,它会起作用。