1

使用すると正しくシャットダウンするJavaアプリケーションがあります。JavaアプリケーションはシャットダウンCTRL-C前にすべてのデータを保存します。今、私はを使用してC#コンソールアプリケーションからこのJavaアプリケーションをシャットダウンしようとしてProcess.Close()いますが、これを使用するとアプリケーションはデータを保存しません、私も試しProcess.CloseMainWindow()ましたが、これを使用しても何も起こりProcess.Kill()ません。 。

C#コンソールアプリケーションからJavaアプリケーションのシャットダウンフックを上げるにはどうすればよいですか?

4

1 に答える 1

2

別のアプリでシャットダウンフックを上げることはできません。

シャットダウンフックは次の場合に実行されます。

  • プログラムは正常に存在します。たとえば、System.exit()が呼び出されるか、最後の非デーモンスレッドが終了します。
  • 仮想マシンは終了します。例:CTRL-C。これは、Unixシステムのkill-SIGTERMpidまたはkill-15pidに対応します。

シャットダウンフックは、次の場合には実行されません。

  • 仮想マシンが異常終了します
  • SIGKILLシグナルは、Unixシステムの仮想マシンプロセスに送信されます。例:kill-SIGKILLpidまたはkill-9pid
  • TerminateProcess呼び出しは、Windowsシステムのプロセスに送信されます。
于 2012-07-03T13:01:30.800 に答える