【发布时间】:2021-01-08 18:42:43
【问题描述】:
根据 fcntl 手册,fcntl 锁定 start=0,len=0,whence=2 应该锁定从文件末尾(whence=2)开始的字节范围,偏移量为 0(start=0)直到文件结尾 (len=0),在我看来,这意味着从 EOF 到 EOF 总共锁定 0 个字节。
在这种情况下,我希望使用这些参数锁定不会锁定任何东西。但是,如果我尝试(使用 python 包装器fcntl),下面的代码确实会锁定某些东西,并且第二个副本正在等待第一个完成:
f = open('some_file', 'a+')
fcntl.lockf(f, fcntl.LOCK_EX, 0, 0, 2)
print('got the lock')
time.sleep(100)
同样,带有参数 whence=2, offset=100, len=0 的代码也可以工作,即使在这种情况下字节范围向后 [EOF + 100, EOF]。
我在锁定什么?
【问题讨论】: