如何遍历Java 9中的Process API的进程树?

Java 9改进了Process API,它有助于管理和控制操作系统进程。在Java 9之前,很难使用Java程序来管理和控制操作系统进程。从J ava 9开始,添加了新的类和接口来通过Java程序控制操作系统进程。添加了诸如ProcessHandle ProcessHandle.Info的新接口,并且还向Process 类添加了新方法。

在下面的示例中,我们可以遍历Process  API的流程树 流程和后代流程)。

示例

import java.io.IOException;

public class ProcessTreeTest {
   public static void main(String args[]) throws IOException {
      Runtime.getRuntime().exec("cmd");
     
      System.out.println("显示子进程:");
      ProcessHandle processHandle = ProcessHandle.current();
      processHandle.children().forEach(childProcess ->
              System.out.println("PID: " + childProcess.pid() + " Command: " + childProcess.info().command().get()));
     
      System.out.println("显示后代进程:");
      processHandle.descendants().forEach(descendantProcess ->
              System.out.println("PID: " + descendantProcess.pid() + " Command: " +   descendantProcess.info().command().get()));
   }
}

输出结果

显示子进程:
PID: 5092 Command: C:\WINDOWS\System32\cmd.exe
显示后代进程:
PID: 5092 Command: C:\WINDOWS\System32\cmd.exe
PID: 2256 Command: C:\WINDOWS\System32\conhost.exe