linux物理内存,虚拟内存的获取
使用文件流的方式,解析 cat /proc/meminfo 文件里面的数据
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <unordered_map> #include <map> struct BASE_INFO_S{ unsigned long long MemTotalMb; //总的物理内存 unsigned long long MemUsedMb; //已使用的物理内存 unsigned long long SwapTotalMb;//总的虚拟内存 unsigned long long SwapUsedMb;//已使用的虚拟内存 }; // cat /proc/meminfo std::map<std::string, std::string> parseMeminfo() { //std::unordered_map<std::string, std::string> meminfo; std::map<std::string, std::string> meminfo; std::ifstream file("/proc/meminfo"); std::string line; if (file.is_open()) { while (std::getline(file, line)) { std::istringstream iss(line); std::string key, value; if (!(iss >> key >> value)) continue; meminfo[key] = value; } file.close(); } else { std::cerr << "Error: Could not open /proc/meminfo" << std::endl; } std::cout<<"========================================================="<<std::endl; for(auto it = meminfo.begin(); it != meminfo.end(); ++it){ std::cout << it->first << ": " << it->second << std::endl; } std::cout<<"========================================================="<<std::endl; BASE_INFO_S baseInfo={0}; baseInfo.MemTotalMb = std::stoll(meminfo["MemTotal:"]) / 1; baseInfo.MemUsedMb = (std::stoll(meminfo["MemTotal:"]) - std::stoll(meminfo["MemFree:"]) - std::stoll(meminfo["Buffers:"]) - std::stoll(meminfo["Cached:"])) / 1; baseInfo.SwapTotalMb = std::stoll(meminfo["SwapTotal:"]) / 1; baseInfo.SwapUsedMb = (std::stoll(meminfo["SwapTotal:"]) - std::stoll(meminfo["SwapFree:"])) / 1; std::cout<<"MemTotalMb:"<<baseInfo.MemTotalMb<<std::endl; std::cout<<"MemUsedMb:"<<baseInfo.MemUsedMb<<std::endl; std::cout<<"SwapTotalMb:"<<baseInfo.SwapTotalMb<<std::endl; std::cout<<"SwapUsedMb:"<<baseInfo.SwapUsedMb<<std::endl; return meminfo; } int main() { auto meminfo = parseMeminfo(); return 0; }
分类:
D.1.2-Linux踩坑之旅
, C++多线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-03-31 clickhouse创建2个表