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

时间:2016-08-26 08:09:12

标签: python c linux locking

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

快速链接:

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

1 个答案:

答案 0 :(得分:2)

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

请参阅source code for the fcntl module

#ifdef HAVE_FLOCK
    Py_BEGIN_ALLOW_THREADS
    ret = flock(fd, code);
    Py_END_ALLOW_THREADS

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

  

<强> fcntl.flock(fd, op)
  对文件描述符 fd 执行锁定操作op(同时接受提供fileno()方法的文件对象)。有关详细信息,请参阅Unix手册 flock(2)。 (在某些系统上,使用fcntl()模拟此功能。)

是的,它会起作用。