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

How can I kill a process from a Java application, if I know the PID of this process? I am looking for a cross-platfrom solution

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

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

Process.kill(pid);

或者我可以编写一种方法来处理(几乎)所有 OS 的情况?

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

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

特别是 ProcessHandle.of(knownPid) will return the ProcessHandle for a given PID (technically an Optional which may be empty if no process was found) and destroy or destroyForcibly 将尝试终止进程。

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