Ich habe gerade die folgende C++ - Funktion geschrieben, um programmatisch zu ermitteln, wie viel RAM ein System installiert hat. Es funktioniert, aber es scheint mir, dass es einen einfacheren Weg dafür geben sollte. Kann mir jemand sagen, ob ich etwas verpasse?Wie bestimmen Sie die Menge an Linux-System-RAM in 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;
}
Erstens, ich bin mit popen("head -n1 /proc/meminfo")
die ersten Zeile der meminfo Datei aus dem System zu erhalten. Die Ausgabe dieses Befehls sieht aus wie
MemTotal: 775.280 kB
Sobald ich diese Ausgabe in einem istringstream
haben, ist es einfach, es tokenize auf die Informationen zu bekommen was ich will. Meine Frage ist, gibt es eine einfachere Möglichkeit, die Ausgabe dieses Befehls einzulesen? Gibt es einen Standard-C++ - Bibliotheksaufruf zum Einlesen des System-RAM?
sysinfo funktioniert perfekt. Vielen Dank. –
Sie möchten vielleicht die Datei Handle nach dem Lesen – segfault
schließen Sicherlich tun die Destruktoren das schon. –