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 <unistd.h> 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; break; } } cout << mem << endl; long pageSize = sysconf( _SC_PAGE_SIZE); long pages = sysconf( _SC_PHYS_PAGES); cout << pageSize << endl; cout << pages << endl; cout << (pageSize / 1024) * pages << endl; return 0; }