如何从C#one正确关闭java应用程序

我有java应用程序,当我使用CTRL-C时正确关闭,java应用程序在关机前保存所有数据。 现在我尝试使用Process.Close()从我的C#控制台应用程序关闭这个java应用程序,但是当我使用它时应用程序不保存任何数据,我也尝试过Process.CloseMainWindow()但是使用它没有发生任何事情,而且Process.Kill()但是使用这个进程刚刚杀死,没有任何问题。

如何从C#控制台应用程序中提高java应用程序的关闭挂钩?

另一个应用程序无法引发关闭挂钩。

关闭钩子运行时:

  • 程序通常存在。 例如,调用System.exit() ,或者退出最后一个非守护程序线程。
  • 虚拟机终止。 例如CTRL-C。 这对应于Unix系统上的kill -SIGTERM pid或kill -15 pid。

在以下情况下,关闭钩子不会运行:

  • 虚拟机中止
  • SIGKILL信号被发送到Unix系统上的虚拟机进程。 例如杀死-SIGKILL pid或kill -9 pid
  • TerminateProcess调用将发送到Windows系统上的进程。