一尘不染

使用Java杀死进程

java

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


阅读 552

收藏
2020-03-02

共2个答案

一尘不染

如果你从Java应用程序中以从头开始处理(例如,通过调用Runtime.exec()ProcessBuilder.start()),那么你将对其具有有效的Process引用,并且可以destroy()在Process类中调用该方法以终止该特定处理。

但是请注意,如果你调用的流程创建了新的子流程,则这些子流程可能不会终止(请参阅http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4770092)。

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

2020-03-02
一尘不染

在Windows上,你可以使用此命令。

taskkill /F /IM <processname>.exe 

要强行杀死它,你可以使用;

Runtime.getRuntime().exec("taskkill /F /IM <processname>.exe")
2020-03-02