c++ 获取进程当前内存使用情况 proc self statm

创建日期: 2024-09-30 18:07 | 作者: 风波 | 浏览次数: 14 | 分类: C++

来源:chatGPT

通过读取文件 /proc/self/statm 来获取内存使用情况。

#include <iostream>
#include <fstream>
#include <string>

void getMemoryUsage() {
    std::ifstream statm("/proc/self/statm");
    if (!statm.is_open()) {
        std::cerr << "Could not open /proc/self/statm" << std::endl;
        return;
    }

    long size, resident, shared, text, lib, data, dt;
    statm >> size >> resident >> shared >> text >> lib >> data >> dt;
    statm.close();

    std::cout << "Total size: " << size << " pages" << std::endl;
    std::cout << "Resident size: " << resident << " pages" << std::endl;
}

int main() {
    getMemoryUsage();
    return 0;
}

参数的含义

注意事项

改进版

#include <unistd.h>

class Utils {
public:
    struct memuse {
        bool success;
        long size, resident, shared, text, lib, data, dt;
    };

    static struct memuse get_memory_usage() {
        struct memuse use;
        std::ifstream statm("/proc/self/statm");
        if (!statm.is_open()) {
            use.success = false;
            return use;
        }
        statm >> use.size >> use.resident >> use.shared >> use.text >> use.lib >> use.data >> use.dt;
        statm.close();
        use.success = true;
        return use;
    }
};

int main() {
    auto use = Utils::get_memory_usage();
}
14 浏览
9 爬虫
0 评论