Linux は、 -Commandを使用して、SIGINTまたはなどの任意の Posix シグナルをプロセスに送信することをサポートしています。とは、友好的またはあまり友好的でない方法でプロセスを終了するための退屈な古い方法ですが、コアダンプをトリガーすることを目的としています。これを使用して、実行中の Java VM をトリガーして、実行中のすべてのスレッドのスタック トレースを含むスレッド ダンプを出力できます。デバッグ情報を出力した後、Java VM はそれまで行っていた処理を続行します。実際、スレッド ダンプは、最高優先度の別の生成されたスレッドで発生します。( を使用して、これを自分で試すことができます。)SIGTERMkillSIGINTSIGTERMSIGQUITkill -3 <VM-PID>
Signal(サポートされていません!)および-packageSignalHandlerのクラスを使用して、独自のシグナル ハンドラーを登録することもsun.miscできるので、さまざまな楽しみ方ができます。
ただし、Windows プロセスにシグナルを送信する方法をまだ見つけていません。シグナルは、特定のユーザー入力によって作成されます。たとえば、両方のプラットフォームでCtrl-Ca をトリガーします。SIGINTしかし、Windows で実行中の非対話型プロセスにシグナルを手動で送信するユーティリティはないようです。明らかな解決策は、Cygwinkill実行可能ファイルを使用することですが、適切な Windows API を使用して Windows プロセスを終了することはできますが、SIGBREAK(Windows で に相当するSIGQUIT) を一緒に送信することはできませんでした。実際、Windowsプロセスに送信できる唯一のシグナルはSIGTERM.
長い話を短くして、見出しを繰り返します: Windows のプロセスに任意のシグナルを送信するにはどうすればよいですか?