有没有人知道如何获得在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中,也许是明智之举。