我试过使用这个程序(改编自 this SO answer ):
// First segment (down to L49) is from SO https://stackoverflow.com/a/26930298/1876983
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
using namespace std;
static unsigned long long lastTotalUser, lastTotalUserLow, lastTotalSys, lastTotalIdle;
void init(){
FILE* file = fopen("/proc/stat", "r");
fscanf(file, "cpu %llu %llu %llu %llu", &lastTotalUser, &lastTotalUserLow,
&lastTotalSys, &lastTotalIdle);
fclose(file);
}
double getCurrentValue(){
double percent;
FILE* file;
unsigned long long totalUser, totalUserLow, totalSys, totalIdle, total;
file = fopen("/proc/stat", "r");
fscanf(file, "cpu %llu %llu %llu %llu", &totalUser, &totalUserLow,
&totalSys, &totalIdle);
fclose(file);
if (totalUser < lastTotalUser || totalUserLow < lastTotalUserLow ||
totalSys < lastTotalSys || totalIdle < lastTotalIdle){
//Overflow detection. Just skip this value.
percent = -1.0;
}
else{
total = (totalUser - lastTotalUser) + (totalUserLow - lastTotalUserLow) +
(totalSys - lastTotalSys);
percent = total;
total += (totalIdle - lastTotalIdle);
percent /= total;
percent *= 100;
}
lastTotalUser = totalUser;
lastTotalUserLow = totalUserLow;
lastTotalSys = totalSys;
lastTotalIdle = totalIdle;
return percent;
}
int main() {
double CPU = getCurrentValue();
printf("%.2f", CPU);
return 0;
}
要确定 Linux 上的 当前 总 CPU 使用率,但它似乎要确定 平均 总 CPU 使用率。目前 KDE CPU 监视器告诉我我的 CPU 使用率只有 17% 而这个程序告诉我它是 60.19%。今天早些时候,我使用 Portage 包管理器编译了一堆软件,因此 60.19% 似乎更准确地代表了我打开这台 PC 后的 平均 CPU 使用率。自从我停止编译软件以来,这个 CPU 使用率数字一直在下降,进一步支持了这个观点,这是 平均 CPU 使用率,而不是当前 CPU 使用率。
最佳答案
一种方法是使用 exec C++ 中的函数执行任何相关的 Linux 命令以获取这些值。您可以使用 >
运算符执行 top
或 uptime
等 Linux 命令。
例如:uptime > output.txt
之后可以读取output.txt
文件。
关于c++ - 如何确定 Linux 上的当前 CPU 使用率,最好使用 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44093078/