2012-07-03 81 views
1

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

如何从C#控制台应用程序提升Java应用程序的关闭钩子?

+0

你的应用程序中是否已经有shutdown hook,并且Process.close()不会触发它? –

+0

@DenisTulskiy,是 – Robert

+0

好的,对不起,没有仔细阅读这个问题 –

回答

2

关闭钩子不能被其他应用程序引发。

  • 的程序通常存在:

    时关闭钩子运行。例如,System.exit()被调用,或者 最后一个非守护线程退出。

  • 虚拟机终止。例如CTRL-C。这对应于在Unix系统上kill-SIGTERM pid或kill -15 pid的 。

    • 虚拟机中止
    • 甲SIGKILL信号被发送到虚拟机过程在Unix系统 :当

    关闭挂接将不会运行。例如kill -SIGKILL pid或kill -9 pid

  • TerminateProcess调用被发送到Windows系统上的进程。
+0

谢谢! Waht我应该使用在Windows上运行关闭钩子,从我的C#应用​​程序? – Robert

+0

如何发送CTRL-C信号到java应用程序 – Robert

+0

我建议宁愿使用cmd来终止进程?但我不能肯定地说它会工作,请参阅这里了解更多信息:http://techmonks.net/windowsxp-using-the-command-prompt-to-see-and-kill-processes/您必须测试它,虽然退缩是你的jar的可移植性。 –