Je viens d'écrire la fonction C++ suivante pour déterminer par programme combien de RAM un système a installé. Cela fonctionne, mais il me semble qu'il devrait y avoir une façon plus simple de le faire. Quelqu'un peut-il me dire s'il me manque quelque chose?Comment déterminez-vous la quantité de RAM système Linux en 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;
}
Tout d'abord, j'utilise popen("head -n1 /proc/meminfo")
pour obtenir la première ligne du fichier meminfo du système. La sortie de cette commande ressemble
MemTotal: 775280 kB
Une fois que j'ai que la production dans un istringstream
, il est facile de tokenizer pour obtenir l'information que je veux. Ma question est, y a-t-il un moyen plus simple de lire dans la sortie de cette commande? Y at-il un appel de bibliothèque C++ standard à lire dans la quantité de RAM système?
sysinfo fonctionne parfaitement. Je vous remercie. –
vous pouvez vouloir fermer la poignée de fichier après avoir lu – segfault
Sûrement les destructeurs le font déjà. –