Eclipse RCPアプリケーションでキル信号をキャプチャする
-
22-07-2019 - |
質問
多くの同じプラグインを使用できるEclipse RCP GUIアプリケーションのコマンドラインバージョンがあります(これは統合テストに便利です)。それが行うことの1つは、サーバーに接続し、ものを要求し、インタラクティブなループを開始することです。終了するには、GUIアプリのユーザーはループを停止してアプリケーションを閉じることができます。
コマンドラインアプリでは、「閉じる」ための最も明白な方法はアプリケーションはCTRL-Cです!ただし、これにより「セッションクラッディング」が残ります。終了信号をキャプチャできる場合は、クリーンアップできるサーバー上で。クラッドは最終的にはタイムアウトになるか、何でもありますが、きれいに整理できればいいと思います。
では、Eclipse RCPアプリケーションからキル信号をキャプチャするためのオプションは何ですか?これが役立つ場合、これはLinux固有です。ただし、SWTプラグインはロードしません。私の「メインループ」コマンドラインでctrl-cを押すと、Plugin.stop()は呼び出されません。 PythonのKeyboardInterruptのようなものはエースでしょう!
解決
別のアプローチを見つけました-終了時に実行されるシャットダウンフックを追加します...
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("The end.");
}
});
他のヒント
bashの trap
ビルトインを見てください。 CTRL-CのシグナルはSIGINTですが、SIGTERMとSIGHUPをトラップすることもできます。
所属していません StackOverflow