java - 如何在JAVA中向进程发送ctrl+c信号

标签 java signals exec processbuilder

我正在使用命令向 Windows 环境下的 JAVA 中的子进程发送信号

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

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

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

最佳答案

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

关于java - 如何在JAVA中向进程发送ctrl+c信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769882/

相关文章:

java - 从 Google Storage 下载数据时出现 SocketTimeoutException

java - 创建支持实习的对象的良好模式?

ruby - 在 Ruby 中使用 GTK3 自定义信号

c - 信号处理程序 sa_sigaction 参数

c - 如何在两个 C 程序之间发送变量

shell - 如何在 crystal-lang 中获取 Process.exec 的输出?

java - 编译为 Jar 文件后找不到类

java - iText PDF : How to create internal links to other sections in PDF

qt - 在QT中设置新公共(public)信号后出现段故障

linux - 如何在 CMake execute_process 中使用 find -exec?