python fcntl未按预期锁定(2)

时间:2013-07-31 11:56:32

标签: python file locking

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

流程A:

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()

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

注意:“无辜”进程B不使用flock(),只有fopen()才能创建新文件。如果其他人可以修改文件,对文件使用独占锁是什么用途?当然,如果B也使用flock(),它会引发IOError,但如果不是???

1 个答案:

答案 0 :(得分:0)

默认情况下,flock是一种建议锁定机制。有关详细信息,请参阅this question