Java9中引入的ProcessHandle接口。它允许我们执行操作并检查相关进程的状态。此接口提供进程的本机进程ID(pid)、开始时间、累计CPU时间、参数、命令、用户、父进程和子进程。
ProcessHandle 接口允许我们执行以下操作。
它返回一个ProcessHandle.Info,其中包含有关进程的更多信息
进程的Pid
如果还活着
检索流程的直接子级的快照
检索流程所有下降的快照
检索所有当前正在运行的进程的快照
允许进程被销毁
当进度终止时,它将返回带有ProcessHandle 的CompletableFuture
ProcessHandle.Inf o包含来自过程快照的信息,包括:
过程的指挥
过程的参数
过程的命令行
进程的开始时间
进程使用的CPU时间
进程的用户
在下面的例子中,我们可以打印PID通过使用当前进程句柄的PID()方法,并且还检查进程当前通过使用运行的IsAlive()方法。
import java.util.Optional; public class ProcessHandleTest { public static void main(String args[]) { long pid = ProcessHandle.current().pid(); ProcessHandle currentProcess = ProcessHandle.current(); System.out.println("PID: " + currentProcess.pid()); Optional<ProcessHandle> processHandle = ProcessHandle.of(pid); boolean isAlive = processHandle.isPresent() && processHandle.get().isAlive(); System.out.println(isAlive); } }
输出结果
PID: 6484 true