ロックファイルを作成するJavaプログラムを使用して、他の実行が同時に実行されないようにします。プログラムが実行されると、ファイルが作成され、正常終了または例外終了時にファイルが削除されます。しかし、ユーザーがCtrl + Cキーを押す、端末を閉じる、または何らかの方法で実行を中断すると、ファイルは削除されません。この割り込みコマンドを検出し、この場合もファイルが削除されるようにする方法はありますか?JavaでCtrl + Cのようなシステム割り込みを処理する方法
7
A
答えて
5
shutdown hooksを調べるとよいでしょう。
また、これはおそらく、重複またはほぼ重複して一日か二日前から、この前のSOの質問です:これに対処するための唯一の良い方法は、あなたのログファイルにタイムスタンプすることである
2
、数秒ごとに新しいタイムスタンプでログファイルを更新します。 File.deleteOnExitが助けになりますが、誰もが電源コードを引っ張ってしまうとどうなりますか?
タイムスタンプを書き込んだ場合、有効なタイムスタンプ(最近書き込まれたもの)があるかどうかをチェックし、タイムスタンプが古すぎる場合はログファイルを上書きできます。そうすれば、失効したロックファイルはユーザーの道には入りません。
関連する問題
- 1. LinuxでのCtrl + C割り込みイベント処理
- 2. 割り込みでグローバル変数を処理する方法
- 3. C++で割り込みを処理する
- 4. 割り込みを処理する方法は?
- 5. Jythonでどのようにキーボード割り込み(CTRL-C)をインターセプトしますか?
- 6. マイクロコントローラでの割り込み処理
- 7. expectスクリプトの実行中に割り込み/ ctrl Cを送信する方法
- 8. キーボード割り込み処理のLinuxデバイスドライバエラー
- 9. 埋め込み:Uブート端末のCtrl-C割り込みのCコード
- 10. cygwin + console2 ctrl-cキーボード割り込みが機能しない
- 11. bashのstdinから読み込むときに割り込み信号を処理する方法
- 12. PCIe割り込み処理用Linuxカーネル
- 13. AVRプログラミング、割り込み処理
- 14. STM32 HAL SPI割り込み処理
- 15. プロセッサが割り込み時の命令を処理する方法
- 16. デュアルプロセッサマシンではどのように割り込みが処理されますか?
- 17. 割り込み処理が必要な理由
- 18. Javaで処理するCtrl-Cを送信
- 19. async zmqでキーボード割り込みを処理する
- 20. Androidアプリケーションで割り込みを処理する
- 21. Linuxで作業中にPythonでCtrl-Cキーボード割り込みをシミュレートする
- 22. $ ctrlの処理方法。 AngularJSで?
- 23. WebViewの読み込み処理方法
- 24. どのように割り込み(つまりSIGTERMまたはSIGINT)を処理するのですか
- 25. Java:トランザクション処理システム
- 26. どのようにKVMが物理的な割り込みを処理しますか?
- 27. kvmのゲストが外部割り込みと外部割り込みを処理する
- 28. java taillistenerで、より多くのログファイルを処理する方法
- 29. ユーザがctrl + cを複数回続けて押すたびにキーボード割り込みをループする方法
- 30. Javaプロセスに割り込みキーシーケンスを送信する方法は?
皮肉なことに、私はこの質問を忘れてしまい、後に関連する6年(関連する現実世界の経験)を忘れてしまいました(https://stackoverflow.com/a/34188676/113632)。 @Amberは、ほとんどのJavaアプリケーションがシャットダウンフックを使用する必要がありますが、リンクされた質問で議論されているように、 'sun.misc.Signal'を使うのに必要な' SIGINT'やその他のシグナルを実際に*扱うことは絶対に正しいです。 – dimo414