你怎么能在java中获取进程的id?

时间:2010-09-14 11:28:06

标签: java

如何获取由Runtime.getRuntime().exec生成的进程的ID?

3 个答案:

答案 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。

这是跨平台的。