0

我想使用 LOCK_EX 来防止其他进程修改正在修改的文件。

过程一:

from fcntl import flock, LOCK_EX, LOCK_NB
from time import sleep
f=open("tmp.txt", "w")
flock(f.fileno(), LOCK_EX|LOCK_NB)
f.write("xxxx")
f.flush()
sleep(20)
f.close()

A启动5秒后,进程B:

f=open("tmp.txt", "w")
f.close()

并且“tmp.txt”被进程B清空......进程B中没有引发IOError。如何防止“tmp.txt”被2个进程使用独占访问权限修改?

注意:“innocent”进程 B 不使用flock(),只使用fopen() 来创建新文件。如果其他人可以修改文件,那么文件上的排他锁有什么用?当然,如果 B 也使用了flock(),它会引发 IOError,但如果不是 ???

4

1 回答 1

0

默认情况下,flock是一种建议性锁定机制。有关更多详细信息,请参阅此问题

于 2013-07-31T12:18:57.407 回答