1

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

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

4

1 回答 1

2

A shutdown hook cannot be raised by another app.

The shutdown hook runs when:

  • A program exists normally. For example, System.exit() is called, or the last non-daemon thread exits.
  • the Virtual Machine is terminated. e.g. CTRL-C. This corresponds to kill -SIGTERM pid or kill -15 pid on Unix systems.

The shutdown hook will not run when:

  • the Virtual Machine aborts
  • A SIGKILL signal is sent to the Virtual Machine process on Unix systems. e.g. kill -SIGKILL pid or kill -9 pid
  • A TerminateProcess call is sent to the process on Windows systems.
于 2012-07-03T13:01:30.800 回答