我刚刚编写了以下 C++ 函数来以编程方式确定系统安装了多少 RAM。它有效,但在我看来,应该有一种更简单的方法来做到这一点。我错过了什么吗?
getRAM()
{
FILE* stream = popen("head -n1 /proc/meminfo", "r");
std::ostringstream output;
int bufsize = 128;
while( !feof(stream) && !ferror(stream))
{
char buf[bufsize];
int bytesRead = fread(buf, 1, bufsize, stream);
output.write(buf, bytesRead);
}
std::string result = output.str();
std::string label, ram;
std::istringstream iss(result);
iss >> label;
iss >> ram;
return ram;
}
首先,我popen("head -n1 /proc/meminfo")
用来从系统中获取 meminfo 文件的第一行。该命令的输出看起来像
内存总量:775280 kB
一旦我在 中获得了该输出istringstream
,就可以很容易地对其进行标记以获得我想要的信息。有没有更简单的方法来读取这个命令的输出?是否有一个标准的 C++ 库调用来读取系统 RAM 的数量?