為什麼flock不清理鎖文件?

為什麼flock不清理鎖文件?

處理完成後,我看到鎖定檔案沒有被刪除?有什麼理由flock保留該文件嗎?另外如何flock知道是否取得了鎖?

crontab這是文件中的範例

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

答案1

對於 的大多數用例flock,鎖定檔案非常重要不是被「清理」。否則,想像一下這個場景:

  • 進程A打開鎖文件,發現它不存在,因此創建它。
  • 進程A獲得鎖
  • 進程B開啟鎖(發現已經存在)
  • 進程B嘗試取得鎖但必須等待
  • 進程A釋放鎖
  • 進程B立即取得鎖
  • 進程A刪除鎖定檔案
  • 進程C開啟鎖定文件,發現它不存在,於是建立一個新的。請注意,它現在保持開啟狀態不同的進程 B 已鎖定的檔案。
  • 進程 C 嘗試獲取鎖定並成功...但它應該必須等待,因為進程 B 仍然打開並鎖定了鎖定檔案[的先前版本]。

相關內容