Wie ermitteln Sie die Menge an Linux-System-RAM in C ++?

Schrieb ich die folgende C++ - Funktion, um programmgesteuert zu bestimmen, wie viel RAM ein system installiert hat. Es funktioniert, aber es scheint mir, dass es sollte ein einfacher Weg, dies zu tun. Kann mir jemand sagen, ob ich etwas fehlt?

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;
}

Erste, ich bin mit popen("head -n1 /proc/meminfo") um die erste Zeile der meminfo-Datei aus dem system. Die Ausgabe dieses Befehls sieht wie

MemTotal: 775280 kB

Einmal habe ich einen Ausgang in istringstreames ist einfach zu tokenisierung es, um auf die Informationen, die ich will. Meine Frage ist, gibt es eine einfachere Möglichkeit, Lesen Sie in der Ausgabe dieses Befehls? Gibt es ein standard C++ library-Aufruf zu Lesen in der Menge von system-RAM?

InformationsquelleAutor der Frage Bill the Lizard | 2008-12-08

Schreibe einen Kommentar