簡體   English   中英

如何使用Java獲取Linux和Solaris上所有正在運行的進程的列表?

[英]How to get a list of all running processes on Linux and Solaris with Java?

有誰知道如何使用Java獲取Linux和Solaris上所有正在運行的進程的列表? 我不想使用像ps這樣的外部程序,我不想使用proc。 我想用本機電話來做。 我找到了一種使用JNA的Windows方法。 但這種方式對Linux和Solaris不起作用。

Java沒有為此提供api。

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

使用/proc文件系統。 ps就是這樣做的 ,我找不到你不應該以同樣的方式去做的原因。

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綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM