JAVA,从父进程id中查找子进程id

问题描述 投票:0回答:1

我正在调用一个生成两个进程的命令

Process p = Runtime.getRuntime().exec("<...>\bin\\script");

“进程 1 的 pid 为 1234,进程 2 的 ppid 为 1234,pid 3456”

我可以通过以下代码获取进程ID(1234):

String name = ManagementFactory.getRuntimeMXBean().getName();
String processId = name.split("@")[0];
System.out.println("Process ID for this app =  " + processId);

但是我无法获取其他进程的ID(3456)。有没有办法从进程中提取所有子进程 ID?

java pid child-process
1个回答
0
投票

从 java 9 开始,您可以从 ProcessHandle 类获取所有子进程和后代进程。 示例:

ProcessHandle.current().children(); // give a stream on all child processes of your current process
ProcessHandle.current().descendants(); // give a stream on all child processes of your current process and recursively their own child processes

您可以使用 allProcesses() 并过滤它或 of(pid),而不是 current(),来查找任何其他进程的子进程。

© www.soinside.com 2019 - 2024. All rights reserved.