在C++中获取当前CPU和RAM使用率需要使用操作系统相关的API。对于Windows系统,可以使用Windows API;对于Linux系统,可以使用POSIX API。以下是一个简单的示例,展示了如何在C++中获取当前的CPU和RAM使用率。
首先,需要包含以下头文件:
#include<iostream>
#include<string>
#include<vector>
#include <fstream>
#include <sstream>
然后,可以定义一个函数来获取CPU使用率:
float getCPUUsage() {
std::ifstream file("/proc/stat");
std::string line;
std::getline(file, line);
std::istringstream iss(line);
std::vector<std::string> fields;
std::string field;
while (iss >> field) {
fields.push_back(field);
}
long user = std::stol(fields[1]);
long nice = std::stol(fields[2]);
long system = std::stol(fields[3]);
long idle = std::stol(fields[4]);
long iowait = std::stol(fields[5]);
long irq = std::stol(fields[6]);
long softirq = std::stol(fields[7]);
long total = user + nice + system + idle + iowait + irq + softirq;
long idle_total = idle + iowait;
float usage = (float)(total - idle_total) / total;
return usage;
}
接下来,可以定义一个函数来获取RAM使用率:
float getRAMUsage() {
std::ifstream file("/proc/meminfo");
std::string line;
long total = 0;
long free = 0;
while (std::getline(file, line)) {
std::istringstream iss(line);
std::string field;
iss >> field;
if (field == "MemTotal:") {
iss >> total;
} else if (field == "MemFree:") {
iss >> free;
}
}
float usage = (float)(total - free) / total;
return usage;
}
最后,可以在主函数中调用这两个函数,并输出结果:
int main() {
float cpu_usage = getCPUUsage();
float ram_usage = getRAMUsage();
std::cout << "CPU usage: "<< cpu_usage * 100 << "%"<< std::endl;
std::cout << "RAM usage: "<< ram_usage * 100 << "%"<< std::endl;
return 0;
}
请注意,这个示例仅适用于Linux系统,并且需要在具有/proc/stat
和/proc/meminfo
文件的目录中运行。对于Windows系统,需要使用不同的API来获取相同的信息。
领取专属 10元无门槛券
手把手带您无忧上云