Я просто написал следующую функцию C++, чтобы программно определить, сколько оперативной памяти установлена системой. Это работает, но мне кажется, что должен быть более простой способ сделать это. Может ли кто-нибудь сказать мне, если я что-то упустил?Как определить объем оперативной памяти Linux в C++?
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 из системы. Вывод этой команды выглядит
MemTotal: 775280 кБ
После того, как я получил этот выход в istringstream
, это просто разметить его, чтобы получить в информации, которую я хочу. Мой вопрос в том, есть ли более простой способ прочитать в выходе этой команды? Существует ли стандартный вызов библиотеки C++ для чтения в объеме системной памяти?
sysinfo работает отлично. Спасибо. – 2008-12-08 16:52:27