如何在 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
广告