flock的python实现是否与标准C库一起透明地工作?如果我有两个程序,一个在Python中,另一个在C中,尝试获取单个文件的锁定它会起作用吗?
快速链接:
答案 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()
模拟此功能。)
是的,它会起作用。