8

他の実行が同時に実行されないようにするためのロックファイルを作成するJavaプログラムがあります。プログラムが実行されると、ファイルが作成され、終了時に、成功または例外を介して、ファイルが削除されます。ただし、ユーザーがCtrl + Cを押したり、端末を閉じたり、その他の方法で実行を中断したりしても、ファイルは削除されません。この割り込みコマンドを検出し、この場合もファイルが削除されていることを確認する方法はありますか?

4

2 に答える 2

5

シャットダウンフックを調べることをお勧めします。

また、これはおそらく1、2日前のこの前のSO質問の重複またはほぼ重複です。

CLIアプリケーションでCtrl+Cを「インターセプト」するにはどうすればよいですか?

于 2009-08-04T20:32:34.323 に答える
2

これに対処する唯一の良い方法は、ログファイルにタイムスタンプを付け、数秒ごとに新しいタイムスタンプでログファイルを更新することです。File.deleteOnExitは役に立ちますが、絶対確実な方法はありません(誰かが電源コードを引っ張るだけでどうなりますか?)。

タイムスタンプを書き込む場合は、有効なタイムスタンプ(最近書き込まれた)を確認し、古すぎる場合はログファイルを上書きできます。そうすれば、古いロックファイルがユーザーの邪魔になることはありません。

于 2009-08-04T20:54:07.523 に答える