我想知道如何“杀死”已经启动的进程。我知道 Process API,但我不确定,如果我可以用它来“杀死”一个已经在运行的进程,例如 firefox.exe 等。如果可以使用 Process API,请指点我进入正确的方向?如果没有,还有哪些其他可用选项?谢谢。
原文由 Jeel Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道如何“杀死”已经启动的进程。我知道 Process API,但我不确定,如果我可以用它来“杀死”一个已经在运行的进程,例如 firefox.exe 等。如果可以使用 Process API,请指点我进入正确的方向?如果没有,还有哪些其他可用选项?谢谢。
原文由 Jeel Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Windows 上,您可以使用此命令。
taskkill /F /IM <processname>.exe
要强行杀死它,您可以使用;
Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe")
原文由 Laksitha Ranasingha 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
如果您从 Java 应用程序中的 with 开始该过程(例如,通过调用
Runtime.exec()
或ProcessBuilder.start()
),那么您有一个有效的Process
引用它,并且您可以调用Process
类中的destroy()
方法来杀死该特定进程。但请注意,如果您调用的进程创建了新的子进程,这些子进程可能不会被终止(请参阅 https://bugs.openjdk.org/browse/JDK-4770092 )。
另一方面,如果您想杀死外部进程(不是从 Java 应用程序产生的),那么您可以做的一件事是调用允许您执行此操作的 O/S 实用程序。例如,您可以在 Unix/Linux 下尝试
Runtime.exec()
onkill
命令并检查返回值以确保应用程序是否被杀死(0 表示成功,-1 表示错误)。但这当然会使您的应用程序平台依赖。