1

SIGARライブラリを使用してC++でCPU使用率を取得しようとしています。この情報を取得するために以下のコードを記述しましたが、何かが間違っています。常に0%ではなく0.3の値を取得しました。 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_calculate2つの異なるCPUを使用せずに、CPUの2つの「スナップショット」の違いに基づいて負荷を決定します。

以下を使用して、ある程度正確に見えるものを作成することができました。

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 に答える