我剛剛編寫了以下C++函數,以編程方式確定系統安裝了多少RAM。它有效,但在我看來,應該有一個更簡單的方法來做到這一點。有人可以告訴我,如果我錯過了什麼嗎?如何確定C++中Linux系統RAM的數量?
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;
}
首先,我使用popen("head -n1 /proc/meminfo")
獲得從系統中meminfo中文件的第一行。該命令的輸出看起來像
MemTotal:775280 KB
一旦我得到了輸出在istringstream
,這是簡單的來標記它讓我在想要的信息。我的問題是,有沒有更簡單的方法來讀取此命令的輸出?是否有一個標準的C++庫調用來讀取大量的系統RAM?
sysinfo完美地工作。謝謝。 – 2008-12-08 16:52:27