【发布时间】:2012-01-07 04:18:21
【问题描述】:
我正在尝试制作一个 Java 程序,它将运行其他几个不相关的 Java 程序,特别是 Minecraft 服务器。 目前,我正在尝试研究如何优雅地结束 java.lang.Process。
这是我的 spawner 程序的代码: http://dl.dropbox.com/u/26746878/SpawnerSource/Main.java.txt
这是生成的程序的代码: http://dl.dropbox.com/u/26746878/SpawnerSource/Tester.java.txt
我要做的是运行我的 spawner 程序。然后,几秒钟后,我用 Ctrl-C 终止它。 我想看到的是我的程序输出“关闭”,然后是“结束”。我还想查看文件“test.txt”。 我实际看到的只是“Shutting Down”,没有“Ending”也没有“test.txt”
我认为问题在于 Process.destroy() 是在不让关闭挂钩运行的情况下强行结束进程。
是否有替代 Process.destroy() 的方法可以优雅地退出进程(即:就像我按下了 Ctrl-C 一样)?
【问题讨论】:
-
是否有使用 Java 执行此任务的特定理由,而不是 shell 脚本/批处理文件?
-
@MarkPeters 我希望最终让这个程序监听一个特定的端口,并让一个 PHP 脚本连接到它,并让程序在生成的进程上执行命令,我更愿意使用 Java这比什么都重要。
-
所以,因为您对 Java 很熟悉,不管它是否是适合这项工作的工具? Java 没有非常丰富的进程管理支持。
-
@AVD:完全不同。这个问题是关于从 Java 内部关闭外部进程,这个问题是关于从外部进程发送信号时优雅地关闭。
标签: java windows multithreading