3

有谁知道如何使用 Java 获取 Linux 和 Solaris 上所有正在运行的进程的列表?我不想使用 ps 之类的外部程序,也不想使用 proc。我想用本机调用来做到这一点。我找到了一种使用 JNA 的 Windows 方法。但这种方式不适用于 Linux 和 Solaris。

4

6 回答 6

2

Java 没有为此提供 api。

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

于 2012-11-22T07:44:33.507 回答
1

使用/proc文件系统。这就是ps 的做法,我找不到你不应该这样做的理由。

于 2012-11-22T09:03:19.663 回答
1

Linuxps和 Solarisps最终都使用各自操作系统的 /proc 实现。你不能不直接或间接地使用 /proc。

于 2012-11-22T23:09:10.703 回答
0

当然,您总是可以查看实现,ps然后在其中执行相同的操作JNI- 但您必须为每个平台单独执行此操作。

于 2012-11-22T07:45:55.693 回答
0

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

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

于 2012-11-22T08:05:52.320 回答
0

看看西格:

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

使用 Sigar,您可以做您正在寻找的事情(以及更多),它具有 JNI 绑定。

于 2013-03-25T14:31:47.960 回答