gpt4 book ai didi

java - 如何使用 Java 中的 SIGAR 或 OSHI API 获取特定应用程序的操作系统进程详细信息?

转载 作者:行者123 更新时间:2023-11-29 08:21:08 25 4
gpt4 key购买 nike

SIGAR 或 OSHI 或任何其他类似的 API 是否提供开箱即用且最重要的是提取操作系统进程信息的通用功能?

我的要求是获取特定程序的所有操作系统进程的 PID 和其他一些详细信息,例如 Chrome 。

如下所示,我编写了自己的实现,但我必须为 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;
}

最佳答案

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)的类。

关于java - 如何使用 Java 中的 SIGAR 或 OSHI API 获取特定应用程序的操作系统进程详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com