如果我知道 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
我知道有几种方法可以从 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