
ProcessHandle接口是在 Java 9 中引入的。它允许我们执行操作并检查相关进程的状态。此接口提供进程的本机进程 ID (pid)、启动时间、累积 CPU 时间、参数、命令、用户、父进程和后代.
ProcessHandle接口允许我们执行以下操作。
- 它返回一个ProcessHandle.Info 包含有关进程的更多信息
- 进程的 Pid
- 如果它处于活动状态
- 检索进程的直接子进程的快照
- 检索进程所有下降的快照
- 检索所有当前正在运行的进程的快照
- 允许销毁进程
- 当 Progress 终止时,它会返回一个带有 ProcessHandle 的 CompletableFuture
立即学习“Java免费学习笔记(深入)”;
立即学习“Java免费学习笔记(深入)”;
ProcessHandle.Info 保存来自进程快照的信息,包括:
- 进程的命令
- 进程的参数
- 进程的命令行
- 进程的启动时间
- 进程使用的CPU时间
- 进程的用户
在下面的例子中,我们可以打印当前进程句柄的pid使用 pid()方法,并使用isAlive()方法检查当前进程是否正在运行。
示例import java.util.Optional;
public class ProcessHandleTest {
public static void main(String args[]) {
long pid = ProcessHandle.current().pid();
<strong>ProcessHandle </strong>currentProcess = ProcessHandle.current();
System.out.println("PID: " + currentProcess.<strong>pid</strong><strong>()</strong>);
<strong>Optional<ProcessHandle></strong> processHandle = ProcessHandle.<strong>of</strong>(pid);
boolean isAlive = processHandle.<strong>isPresent()</strong> && processHandle.get().<strong>isAlive()</strong>;
System.out.println(isAlive);
}
}输出
<strong>PID: 6484
true</strong>