如何获取由Runtime.getRuntime().exec
生成的进程的ID?
答案 0 :(得分:1)
这将是环境/操作系统特定的。
如果您使用的是Unix,则可以编写脚本以输出进程ID,然后exec
执行所需的进程。该进程将替换进程表中的脚本并使用相同的进程ID运行。 e.g。
#!/bin/sh
echo $$
exec 'your program here'
因此,您的父Java进程可以生成此进程,读取输出,第一行是您的进程ID。
答案 1 :(得分:0)
编辑 - 正如Brian指出的那样,get是正在运行的进程的id,而不是生成进程的id。
我能想到的第一个解决方案是:
ManagementFactory.getRuntimeMXBean().getName();
你会得到类似的东西: 18306 @ localhost 。 18306是进程ID。
答案 2 :(得分:0)
有一个API允许您从java查询进程列表:Sigar。它看起来很商业化,但它实际上是GPL。如果你有关于你的衍生过程的一些细节,你可能会提出一个Sigar查询,它将返回你的pid。
这是跨平台的。