Hallo, wie kann ich von meinem Programm aus herausfinden, wieviel Physikalischer Speicher (RAM) in dem System, auf dem meine Anwendung läuft, installiert ist? Gibts da irgendwelche Bibliotheken oder muss ich irgendwelche Kommandozeilen-Tools (Welche?) mit system() aufrufen? Vielen Dank, Ralf.
Ralf Schneider wrote:
Gibts da irgendwelche Bibliotheken oder muss ich irgendwelche Kommandozeilen-Tools (Welche?) mit system() aufrufen?
"free -t" ergibt: total used free shared buffers cached Mem: 127996 124024 3972 20940 65316 24536 -/+ buffers: 34172 93824 Swap: 261496 40 261456 Total: 389492 124064 265428 Zweite Zeile, Zweiter Zahlenwert ist die Menge an freiem Hauptspeicher in KB Sonst kannst du noch ueberlegen /proc/meminfo auszuwerten. Die Rechnerei mit Buffers und Cached haste dann selbst zu erledigen: total: used: free: shared: buffers: cached: Mem: 131067904 127074304 3993600 22159360 66949120 25124864 Swap: 267771904 40960 267730944 MemTotal: 127996 kB MemFree: 3900 kB MemShared: 21640 kB Buffers: 65380 kB Cached: 24536 kB SwapTotal: 261496 kB SwapFree: 261456 kB Peter
On Monday 17 February 2003 14:51, Ralf Schneider wrote:
Hallo,
wie kann ich von meinem Programm aus herausfinden, wieviel Physikalischer Speicher (RAM) in dem System, auf dem meine Anwendung läuft, installiert ist? Gibts da irgendwelche Bibliotheken oder muss ich irgendwelche Kommandozeilen-Tools (Welche?) mit system() aufrufen? [...]
Hi, ein wahrscheinlich ziemlich unportable Art waere das: #include <iostream> #include <fstream> #include <sstream> #include <string> using namespace std; int main() { std::ifstream in( "/proc/meminfo"); string s; int mem; while (in) { getline( in, s); string::size_type pos = s.find( "MemTotal:"); if (pos != string::npos) { istringstream tmp( s.substr( pos + sizeof( "MemTotal:"))); tmp >> mem; mem *= 1024; break; } } cout << mem << endl; return 0; }
On Montag, 17. Februar 2003 15:31, Sebastian Huber wrote:
ein wahrscheinlich ziemlich unportable Art waere das:
Ich bin mir ziemlich sicher, daß das nur unportabel geht. Immerhin sollte es
auf absehbare Zeit auf jeglichem Linux laufen.
Eine Kleinigkeit noch: Anstatt immer mit 1024 zu multiplizieren, wäre es
wesentlich sicher, die Einheit ("kB") auszuwerten, dann bekommt man nicht in
(näherer) Zukunft Probleme, wenn hier auf einmal MB oder GB ausgegeben
werden.
CU
--
Stefan Hundhammer
On Monday 17 February 2003 15:41, Stefan Hundhammer wrote:
On Montag, 17. Februar 2003 15:31, Sebastian Huber wrote:
ein wahrscheinlich ziemlich unportable Art waere das:
Ich bin mir ziemlich sicher, daß das nur unportabel geht. Immerhin sollte es auf absehbare Zeit auf jeglichem Linux laufen.
Eine Kleinigkeit noch: Anstatt immer mit 1024 zu multiplizieren, wäre es wesentlich sicher, die Einheit ("kB") auszuwerten, dann bekommt man nicht in (näherer) Zukunft Probleme, wenn hier auf einmal MB oder GB ausgegeben werden.
Hallo,
jetzt ist es mir wieder eingefallen. 'sysconf' ist wohl wesentlich besser:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include
participants (4)
-
Peter Wiersig
-
Ralf Schneider
-
Sebastian Huber
-
Stefan Hundhammer