如何将ctrl + c信号发送到JAVA中的进程

时间:2013-12-25 06:46:39

标签: java signals exec processbuilder

我正在使用命令

在Windows环境中向JAVA中的子进程发送信号
Runtime.getRuntime().exec("kill -SIGINT "+Integer.toString(pid));

但它给了我错误,无法运行程序杀死,我做错了什么,我该怎么做?

任何帮助将不胜感激! 感谢: - )

2 个答案:

答案 0 :(得分:1)

由于没有独立于平台的方法来终止进程,因此无法在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。但是,如果使用“结束进程”,则直接终止进程,不会发送任何消息。

答案 1 :(得分:0)

您需要使用forcefully选项执行命令。尝试这个修改过的命令:

Runtime.getRuntime().exec("kill -f -SIGINT "+Integer.toString(pid));

希望这会对你有所帮助。