如何使用Java中的SIGAR或OSHI API获取特定应用程序的OS处理细节?

时间:2019-09-28 13:10:26

标签: java sigar oshi

SIGAR或OSHI或任何其他类似的API是否提供开箱即用的功能,最重要的是,是否提供了通用功能来提取OS进程信息?

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

如下所示,我编写了自己的实现,但我将不得不为Unix,Mac,Solaris等提供一些不同的方法,因为以下方法特定于Windows。为了保持通用性,我想知道SGIAR / OSHI中是否有任何OOTB方法。

a_hex_str = ':'.join('%02x' % b for b in a_bytes)

2 个答案:

答案 0 :(得分:2)

我之前找不到它,因为SIGAR文档无法公开获得。我在此链接上找到了它们。其中包含文档和API参考。

顺便说一下方法 public long[] find(java.lang.String query) throws SigarException类中的ProcessFinder可用于获取操作系统详细信息。

SIGAR API参考可以从https://sourceforge.net/projects/sigar/下载

答案 1 :(得分:2)

OSHI的OSProcess类为Windows,macOS,Linux,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”)很有用。