2013-01-24 81 views
1

我試圖在使用SIGAR庫的C++中獲得CPU使用率百分比,我編寫了下面的代碼以嘗試獲取此信息,但出現了一些錯誤,始終得到0.3的值...而不是0%到100%之間的值。如何獲得SIGAR庫的CPU使用率百分比?如何在C++中使用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(); 
} 
+0

你期望的CPU使用率得到什麼? –

+0

我想獲得所有核心CPU使用率百分比,就像我們在任務管理器中獲得的一樣 – user1576869

回答

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; 
+0

我明白你在做什麼,我只是想了解0.3在特定運行期間可能與運行的代碼相關 - 0.3意味着什麼30%,也許? –

+0

從我可以在網上收集,是的,你得到的價值是[0,1],所以有百分比,你將不得不乘以100 – emartel

+0

我認爲0.3 ...不是指CPU使用百分比,因爲我正在運行該程序啓動AIDA64 CPU基準測試並且任務管理器顯示100%的CPU使用率 – user1576869

相關問題