如何在Java和Solaris上获得所有正在运行的进程的列表?

有没有人知道如何获得在Linux和Solaris上与Java的所有正在运行的进程的列表? 我不想使用外部程序,如ps,我不想使用proc。 我想用本地电话来完成。 我find了使用JNA的Windows的一种方法。 但是这种方式在Linux和Solaris上不起作用。

Java不提供这个API。

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

使用/proc文件系统。 这是如何做到这一点 ,我找不到一个原因,你不应该这样做。

Linux ps和Solaris ps最终都使用其各自操作系统的/ proc实现。 你不能不使用/ proc,直接或间接。

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

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

如果你不喜欢这个想法,那么回到由ps命令表示的可移植的API中,也许是明智之举。

看看Sigar:

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

随着Sigar你可以做你正在寻找(和更多),它有JNI绑定。