1

我正在尝试使用 SIGAR 库获取 c++ 中的 CPU 使用百分比,我编写了下面的代码来尝试获取此信息,但出现了问题,我总是得到一个 0.3 的值......而不是 0% 之间的值到 100%。如何使用 SIGAR 库获取 CPU 使用百分比?

#include <QDebug>
#include <sigar.h>
extern "C" 
{
#include <sigar_format.h>
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    sigar_cpu_t cpu1;
    sigar_cpu_t cpu2;
    sigar_cpu_perc_t perc;
    sigar_cpu_perc_calculate(&cpu1, &cpu2, &perc);
    qDebug() << perc.combined;

    return a.exec();
}
4

1 回答 1

2

编辑:我不是Sigar专家,这是我第一次听到提到它。根据我从代码中可以得出sigar_cpu_perc_calculate的结论,根据 CPU 的两个“快照”之间的差异确定负载,而不是使用两个不同的 CPU。

使用以下方法,我可以得到一些看起来有些准确的东西:

sigar_t *sigar_cpu;
sigar_cpu_t old;
sigar_cpu_t current;

sigar_open(&sigar_cpu);
sigar_cpu_get(sigar_cpu, &old);

sigar_cpu_perc_t perc;

while(1)
{
    sigar_cpu_get(sigar_cpu, &current);
    sigar_cpu_perc_calculate(&old, &current, &perc);

    std::cout << "CPU " << perc.combined * 100 << "%\n";
    old = current;
    Sleep(100);
}

sigar_close(sigar_cpu);
return 0;
于 2013-01-24T18:40:18.440 回答