【发布时间】:2013-12-25 06:46:39
【问题描述】:
我正在使用命令在 Windows 环境中向 JAVA 中的子进程发送信号
Runtime.getRuntime().exec("kill -SIGINT "+Integer.toString(pid));
但它给了我错误,无法运行程序 kill,我做错了什么,我该怎么做?
任何帮助将不胜感激! 谢谢:-)
【问题讨论】:
标签: java signals exec processbuilder
我正在使用命令在 Windows 环境中向 JAVA 中的子进程发送信号
Runtime.getRuntime().exec("kill -SIGINT "+Integer.toString(pid));
但它给了我错误,无法运行程序 kill,我做错了什么,我该怎么做?
任何帮助将不胜感激! 谢谢:-)
【问题讨论】:
标签: java signals exec processbuilder
由于没有独立于平台的方式来终止进程,因此您不能在 Windows 上使用 KILL。
Process 类有一个您可以使用的destroy() 方法。
见http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#destroy()
更新 如果您想要显式/以编程方式杀死任何类型的另一个程序/进程,在 SysInternals 的 pstools 中有一个名为“pskill”的小工具,其行为就像 Unixen“kill”一样。
当用户从 Windows 任务管理器中选择任务并单击“结束任务”时,操作系统将发送 WM_CLOSE。但是,如果您使用“结束进程”,则会直接终止该进程,永远不会发送任何消息。
【讨论】:
您需要使用强制选项执行命令。试试这个修改后的命令:
Runtime.getRuntime().exec("kill -f -SIGINT "+Integer.toString(pid));
希望这会对你有所帮助。
【讨论】: