首页 > 解决方案 > 如果我知道该进程的 PID,如何从 Java 应用程序中终止该进程?我正在寻找一个跨平台的解决方案

问题描述

我知道有几种方法可以从 Java 中终止进程,但所有这些方法都使用某种特定于平台的代码,这些代码只能在 Windows 或 Linux 上运行。

有没有我可以使用的库,我可以调用类似的东西

Process.kill(pid);

或者也许我可以编写一种方法来处理(几乎)所有操作系统情况?

我想做的就是终止一个进程,知道它已经是 PID。

标签: javaprocesscross-platform

解决方案


由于 Java 9ProcessHandle允许与系统上的所有进程进行交互(当然受系统权限的限制)。

具体来说ProcessHandle.of(knownPid),将返回ProcessHandle给定 PID 的 (从技术上讲Optional,如果没有找到进程,它可能是空的)并且destroydestroyForcibly将尝试终止该进程。

IE

long pid = getThePidViaSomeWay();
Optional<ProcessHandle> maybePh = ProcessHandle.of(pid);
ProcessHandle ph = maybePh.orElseThrow(); // replace with  your preferred way to handle no process being found.
ph.destroy(); //or
ph.destroyForcibly(); // if you want to be more "forcible" about it

推荐阅读