获取Java中的子进程ID

我以这种方式创建子流程:

String command = new String("some_program");

Process p = Runtime.getRuntime().exec(command);

如何获取该子进程ID?

PS我正在Linux上工作。

回答:

仍然没有为此的公共API(请参阅http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896),但是有解决方法。

第一个解决方法是使用像这样的外部程序,ps并使用Runtime.exec()来调用它以获得pid :)

另一个基于以下事实:java.lang.Process该类是抽象的,并且实际上根据您的平台会得到一个具体的子类。在Linux上,您将获得一个java.lang.UnixProcess带有私有字段的int

pid。使用反射,您可以轻松获得此字段的值:

Field f = p.getClass().getDeclaredField("pid");

f.setAccessible(true);

System.out.println( f.get( p ) );

以上是 获取Java中的子进程ID 的全部内容, 来源链接: utcz.com/qa/416267.html

回到顶部