如何使用Java获取Linux和Solaris上所有正在运行的进程的列表?

时间:2012-11-22 07:35:04

标签: java linux process solaris jna

有谁知道如何使用Java获取Linux和Solaris上所有正在运行的进程的列表?我不想使用像ps这样的外部程序,我不想使用proc。我想用本机电话来做。我找到了一种使用JNA的Windows方法。但这种方式对Linux和Solaris不起作用。

6 个答案:

答案 0 :(得分:2)

Java没有为此提供api。

您可以做的是解析Process p = Runtime.getRuntime().exec("ps");

的结果

答案 1 :(得分:1)

使用/proc文件系统。这是how ps does it,我找不到你不应该这样做的原因。

答案 2 :(得分:1)

Linux ps和Solaris ps最终都使用各自操作系统的/ proc实现。无论是直接还是间接使用/ proc,你都不得不这样做。

答案 3 :(得分:0)

当然,您可以随时查看ps的实施情况,然后在JNI中执行相同操作 - 但您必须为每个平台单独执行此操作。

答案 4 :(得分:0)

使用ps。 如果您不想告诉系统运行ps命令,而是通过JNI,那么获取Linux和OpenSolaris的ps源代码的副本。然后编写使用JNI执行ps源代码使用的系统调用的Java代码。请注意,您需要考虑不同操作系统的低级别详细信息,因为它们不相同。

如果你不喜欢这个想法,那么回到ps命令所代表的可移植API也许是最明智的。

答案 5 :(得分:0)

看看Sigar:

http://support.hyperic.com/display/SIGAR/Home

使用Sigar,你可以做你想要的(以及更多),它有JNI绑定。