亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Java 中的 SIGAR 或 OSHI API 獲取特定應用程序的操作系統進程詳細信息?

如何使用 Java 中的 SIGAR 或 OSHI API 獲取特定應用程序的操作系統進程詳細信息?

開心每一天1111 2023-09-06 17:13:44
SIGAR 或 OSHI 或任何其他類似的 API 是否提供開箱即用且最重要的是提取操作系統進程信息的通用功能?我的要求是獲取特定程序(例如 Chrome)的所有操作系統進程的 PID 和其他一些詳細信息。如下所示,我編寫了自己的實現,但我必須為 Unix、Mac、Solaris 等想出一些不同的方法,如下所示特定于 Windows。為了保持通用,我想知道 SGIAR / OSHI 中是否有任何 OOTB 方法。public static List<String> getNodeDetailsFromWinOs(){        List<String> nodeList = new ArrayList<String>();        String process;        Process p = Runtime.getRuntime().exec("tasklist.exe /nh");        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));        while ((process = input.readLine()) != null)                         {                          nodeList.add(process.substring(10, process.indexOf(".")));                        }        input.close();        return nodeList;        }
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

OSHI 的OSProcess類為 Windows、macOS、Linux、AIX、Solaris 和 FreeBSD 提供了這種開箱即用的功能。

SystemInfo si = new SystemInfo();

OperatingSystem os = si.getOperatingSystem();

OSProcess[] procs = os.getProcesses(0, null);


for (OSProcess p : procs) {

? ? if (p.getName().contains("Chrome")) {

? ? ? ? // do stuff with p

? ? }

}

您可能還會發現p.getParentProcessPid()和os.getChildProcesses(pid)方法可用于識別與父 Chrome 進程關聯的其他進程(不包括名稱“Chrome”)。


此外,從 Java 9 開始,核心 JDK 包含一個ProcessHandle類,其中包含一些基本信息,包括 PID。



查看完整回答
反對 回復 2023-09-06
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

我之前找不到它,因為 SIGAR 文檔無法公開獲取。我通過這個鏈接找到了它們。這包含文檔和 API 參考。

順便說一句,?public long[] find(java.lang.String query) throws SigarException類中的方法ProcessFinder可用于獲取操作系統詳細信息。

查看完整回答
反對 回復 2023-09-06
  • 2 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號