首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C++中获得当前的CPU和RAM使用率?

在C++中获取当前CPU和RAM使用率需要使用操作系统相关的API。对于Windows系统,可以使用Windows API;对于Linux系统,可以使用POSIX API。以下是一个简单的示例,展示了如何在C++中获取当前的CPU和RAM使用率。

首先,需要包含以下头文件:

代码语言:cpp
复制
#include<iostream>
#include<string>
#include<vector>
#include <fstream>
#include <sstream>

然后,可以定义一个函数来获取CPU使用率:

代码语言:cpp
复制
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使用率:

代码语言:cpp
复制
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;
}

最后,可以在主函数中调用这两个函数,并输出结果:

代码语言:cpp
复制
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来获取相同的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券