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


Java 9 改进了 Process API,支持管理和控制操作系统进程。在 Java 9 之前,很难使用 Java 程序管理和控制操作系统进程。自 Java 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("Showing children processes:");
      ProcessHandle processHandle = ProcessHandle.current();
      processHandle.children().forEach(childProcess ->
              System.out.println("PID: " + childProcess.pid() + " Command: " + childProcess.info().command().get()));
     
      System.out.println("Showing descendant processes:");
      processHandle.descendants().forEach(descendantProcess ->
              System.out.println("PID: " + descendantProcess.pid() + " Command: " +   descendantProcess.info().command().get()));
   }
}

输出

Showing children processes:
PID: 5092 Command: C:\WINDOWS\System32\cmd.exe
Showing descendant processes:
PID: 5092 Command: C:\WINDOWS\System32\cmd.exe
PID: 2256 Command: C:\WINDOWS\System32\conhost.exe

更新日期:08-4 月-2020

277 次浏览

启动您的 职业

完成课程获得认证

开始
广告