如何在C++;使用Sigar库 我试图用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(); } #包括 #包括 外部“C” { #包括 } int main(int argc,char*argv[]) { qcorea应用程序(argc、argv); sigar_cpu_t cpu1; sigar_cpu_t cpu2; sigar_cpu_perc_t perc; sigar_cpu_perc_计算(&cpu1,&cpu2,&perc); qDebug()

如何在C++;使用Sigar库 我试图用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(); } #包括 #包括 外部“C” { #包括 } int main(int argc,char*argv[]) { qcorea应用程序(argc、argv); sigar_cpu_t cpu1; sigar_cpu_t cpu2; sigar_cpu_perc_t perc; sigar_cpu_perc_计算(&cpu1,&cpu2,&perc); qDebug(),c++,cpu-usage,sigar,C++,Cpu Usage,Sigar,编辑: 我不是Sigar专家,这是我第一次听到有人提到它。从代码中我可以看出,Sigar\u cpu\u perc\u calculate根据cpu的两个“快照”之间的差异来确定负载,而不是使用两个不同的cpu 我能够通过以下方法得到一些看起来比较准确的东西: sigar_t *sigar_cpu; sigar_cpu_t old; sigar_cpu_t current; sigar_open(&sigar_cpu); sigar_cpu_get(sigar_cpu, &ol

编辑: 我不是
Sigar
专家,这是我第一次听到有人提到它。从代码中我可以看出,
Sigar\u cpu\u perc\u 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;
sigar\u t*sigar\u cpu;
sigar_cpu_t old;
信号电流;
sigar_打开(&sigar_cpu);
sigar_cpu_get(sigar_cpu,&old);
sigar_cpu_perc_t perc;
而(1)
{
sigar_cpu_get(sigar_cpu和电流);
sigar_cpu_perc_计算(&old,¤t,&perc);

std::cout您希望得到什么cpu使用率?我想得到所有核心cpu使用率,就像我们在任务管理器中得到的那样。我了解您要实现的目标,我只是想了解0.3可能与此特定运行期间运行的代码有什么关系-0.3可能意味着30%吗?从我在线收集的信息来看,是的,您得到的值是[0,1]因此,要获得百分比,您必须乘以100。我认为0.3…并不意味着CPU使用率,因为我在启动AIDA64 CPU基准测试后运行程序,任务管理器显示100%的CPU使用率是,但您的“基准测试”不好,因为您只在特定执行点调用一次我将代码放入循环中,但我始终得到相同的值,例如,如果第一个值为34,则显示34,34…如果第一个值为54,则显示54,54,54…当任务管理器和AIDA64显示100%的CPU使用率时,sigar是否需要初始化?