void GetSysInfo::GetMemoryInfo(long long &dwTotalPhys, long long &dwAvailPhys)
{
//TODO: 获取总的内存使用
Mem_info omem;
if (get_mem_occupy(&omem))//获取内存信息
{
dwTotalPhys = omem.total;
dwAvailPhys = omem.available;
std::cout << "test_GetMemoryInfo(): " << "dwTotalPhys = " << dwTotalPhys << " " <<"dwAvailPhys = " << dwAvailPhys << std::endl;;
}
else
{
dwTotalPhys = -1;
dwAvailPhys = -1;
std::cout << "test_GetMemoryInfo(): " << "dwTotalPhys = " << dwTotalPhys << " " << "dwAvailPhys = " << dwAvailPhys << std::endl;;
}
//cal_mem_occupy(&omem);//计算内存使用率
}
bool GetSysInfo::get_mem_occupy(Mem_info *o)
{
FILE* fpMemInfo = fopen("/proc/meminfo", "r");
if (NULL == fpMemInfo)
{
return false;
}
int i = 0;
int value;
char name[1024];
char line[1024];
int nFiledNumber = 2;
int nMemberNumber = 5;
while (fgets(line, sizeof(line) - 1, fpMemInfo))
{
if (sscanf(line, "%s%u", name, &value) != nFiledNumber)
{
continue;
}
if (0 == strcmp(name, "MemTotal:"))
{
++i;
o->total = value;
}
else if (0 == strcmp(name, "MemFree:"))
{
++i;
o->free = value;
}
else if (0 == strcmp(name, "MemAvailable:"))
{
++i;
o->available = value;
}
else if (0 == strcmp(name, "Buffers:"))
{
++i;
o->buffers = value;
}
else if (0 == strcmp(name, "Cached:"))
{
++i;
o->cached = value;
}
if (i == nMemberNumber)
{
break;
}
}
// system("free");
// system("cat /proc/meminfo");
// printf("MemTotal : %d\n",o->total);
// printf("MemFree : %d\n",o->free);
// printf("MemAvailable : %d\n",o->available);
// printf("MemBuffers : %d\n",o->buffers);
// printf("MemCached : %d\n",o->cached);
// printf("MemSwapCached : %d\n",o->swap_cached);
// printf("MemSwapTotal : %d\n",o->swap_total);
// printf("MemSwapFree : %d\n",o->swap_free);
fclose(fpMemInfo);
return true;
}
linux获取内存信息
最新推荐文章于 2024-02-29 09:48:02 发布