Я просто написал следующую функцию С++, чтобы программно определить, сколько оперативной памяти установлена системой. Это работает, но мне кажется, что должен быть более простой способ сделать это. Может кто-нибудь сказать мне, если я что-то упустил?
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 kB
Как только я получаю этот вывод в istringstream
, он простенит его, чтобы получить информацию, которую я хочу. Мой вопрос в том, есть ли более простой способ прочитать в выходе этой команды? Существует ли стандартный вызов библиотеки С++ для чтения в объеме системной памяти?