なぜ flock はロック ファイルを消去しないのですか?

なぜ flock はロック ファイルを消去しないのですか?

プロセスが完了した後、ロック ファイルが削除されていないことがわかります。flockファイルを保持する理由はありますか? また、flockロックが取得されたかどうかはどのようにしてわかりますか?

crontabこれはファイルからの例です

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

答え1

のほとんどの使用例ではflock、ロックファイルがない「クリーンアップ」する必要があります。そうでない場合は、次のシナリオを想像してください。

  • プロセス A はロック ファイルを開き、存在しないことがわかったので、ロック ファイルを作成します。
  • プロセスAがロックを取得する
  • プロセスBがロックを開く(すでに存在することがわかる)
  • プロセスBはロックを取得しようとするが、待たなければならない
  • プロセスAがロックを解除する
  • プロセスBは即座にロックを取得する
  • プロセスAはロックファイルを削除する
  • プロセスCはロックファイルを開き、存在しないことがわかったので、新しいファイルを作成します。現在、ロックファイルを保持していることに注意してください。違うプロセス B がロックしたロック ファイル。
  • プロセス C はロックの取得を試み、成功しました...しかし、プロセス B がまだロック ファイルを開いてロックしているため、待機する必要がありました。

関連情報