Как получить процент использования процессора в C ++ с помощью библиотек Sigar

Я пытаюсь получить процент использования ЦП в c ++ с помощью библиотек SIGAR, я написал код ниже, чтобы попытаться получить эту информацию, но что-то не так, я всегда получал значение 0,3 … вместо значения между 0% до 100%. Как получить процент использования процессора с библиотеками SIGAR?

#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();
}

1

Решение

редактировать:
я не Sigar эксперт, я впервые слышу это упоминание Из того, что я мог понять из кода, sigar_cpu_perc_calculate определяет нагрузку на основе разницы между двумя «снимками» процессора, не используя два разных процессора.

Мне удалось получить что-то, что выглядело несколько точным, используя следующее:

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;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]