使用 Java 杀死进程

新手上路,请多包涵

我想知道如何“杀死”已经启动的进程。我知道 Process API,但我不确定,如果我可以用它来“杀死”一个已经在运行的进程,例如 firefox.exe 等。如果可以使用 Process API,请指点我进入正确的方向?如果没有,还有哪些其他可用选项?谢谢。

原文由 Jeel Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 938
2 个回答

如果您从 Java 应用程序中的 with 开始该过程(例如,通过调用 Runtime.exec()ProcessBuilder.start() ),那么您有一个有效的 Process 引用它,并且您可以调用 Process 类中的 destroy() 方法来杀死该特定进程。

但请注意,如果您调用的进程创建了新的子进程,这些子进程可能不会被终止(请参阅 https://bugs.openjdk.org/browse/JDK-4770092 )。

另一方面,如果您想杀死外部进程(不是从 Java 应用程序产生的),那么您可以做的一件事是调用允许您执行此操作的 O/S 实用程序。例如,您可以在 Unix/Linux 下尝试 Runtime.exec() on kill 命令并检查返回值以确保应用程序是否被杀死(0 表示成功,-1 表示错误)。但这当然会使您的应用程序平台依赖。

原文由 Yohan Liyanage 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题