Я только что написал следующую функцию 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 ++ для чтения в объеме системной памяти?