【发布时间】:2014-03-26 18:42:40
【问题描述】:
我在学校运行 Ubuntu 13.10 的计算机上有 16 GB RAM。我编写了一个简单的 C 程序来获取总 RAM,但它显示了不精确的结果,而不是 16,它打印出 15。如何使其精确,即使对于较小的 RAM 尺寸?在家里,我有一台 768 MB RAM 的电脑,我的程序也显示错误的结果:(
#include <sys/sysctl.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
void getMemoryInfo()
{
FILE *meminfo = fopen("/proc/meminfo", "r");
int totalMemory = 0;
if(meminfo == NULL)
{
exit(-1);
}
char buff[256];
while(fgets(buff, sizeof(buff), meminfo))
{
int ramKB;
if(sscanf(buff, "MemTotal: %d kB", &ramKB) == 1)
{
totalMemory = ramKB/1024.0;
totalMemory = totalMemory/1024.0;
}
}
if(fclose(meminfo) != 0)
{
exit(-1);
}
printf("%d\n", totalMemory);
}
int main()
{
getMemoryInfo();
return 0;
}
【问题讨论】: