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

标签 c# java shutdown-hook

我有一个java应用程序,当我使用CTRL-C时它可以正确关闭,java应用程序在关闭之前保存所有数据。现在我尝试使用 Process.Close() 从我的 C# 控制台应用程序关闭此 java 应用程序,但是当我使用它时应用程序不保存任何数据,我也尝试过 Process.CloseMainWindow()但使用这个什么也没有发生,而且Process.Kill()但使用这个过程只是杀死,没有任何保存。

如何从 C# 控制台应用程序引发 Java 应用程序的关闭 Hook ?

最佳答案

关闭 Hook 不能由其他应用程序引发。

关闭 Hook 在以下情况运行:

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

关闭 Hook 在以下情况下不会运行:

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

关于c# - 如何从 C# 正确关闭 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11310530/

相关文章:

C#/XNA - 二维碰撞引擎故障?

java - 当 cookie 包含变音字符时 Tomcat 7 异常

java - 使用 IExecutorService 异步重试

java - 在 Java 中区分关闭比 Runtime.setShutdownHook()

java - 发送SIGTERM时,VM_Exit是如何传递给VM Thread的?由谁传递?

c# - 在 ASP.NET Core 中显示只读字段

c# - 使用 Entity Framework 删除数据库

c# - 有什么方法可以在没有 Debug模式的情况下运行 .net 核心 Web 应用程序?

java - 为 jar 文件设置 Launch4j 的说明

Java 关闭 Hook 未启动我的进程