为什么flock不清理锁文件?

为什么flock不清理锁文件?

处理完成后,我看到锁定文件没有被删除?有什么理由flock保留该文件吗?另外如何flock知道是否获取了锁?

crontab这是文件中的示例

* * * * * flock python <script_name>.py

答案1

对于 的大多数用例flock,锁定文件非常重要不是被“清理”。否则,想象一下这个场景:

  • 进程A打开锁文件,发现它不存在,因此创建它。
  • 进程A获得锁
  • 进程B打开锁(发现已经存在)
  • 进程B尝试获取锁但必须等待
  • 进程A释放锁
  • 进程B立即获取锁
  • 进程A删除锁文件
  • 进程C打开锁文件,发现它不存在,于是创建一个新的。请注意,它现在保持打开状态不同的进程 B 已锁定的文件。
  • 进程 C 尝试获取锁并成功...但它应该必须等待,因为进程 B 仍然打开并锁定了锁文件[的先前版本]。

相关内容