|
0
|
1 #include <iostream> |
|
|
2 #include <fstream> |
|
|
3 #include <sstream> |
|
|
4 #include <iomanip> |
|
|
5 int main() { |
|
|
6 std::string myText; |
|
|
7 std::ifstream Meminfo("/proc/meminfo"); |
|
|
8 std::string uptimeText; |
|
|
9 std::ifstream Uptime("/proc/uptime"); |
|
|
10 std::string distro; |
|
|
11 std::ifstream OsRelease("/etc/os-release"); |
|
|
12 long total = 0; |
|
|
13 long available = 0; |
|
|
14 while (std::getline (Meminfo, myText)) { |
|
|
15 std::istringstream ss(myText); |
|
|
16 std::string name; |
|
|
17 long value; |
|
|
18 ss >> name >> value; |
|
|
19 if (name == "MemTotal:") { |
|
|
20 total = value; |
|
|
21 } |
|
|
22 if (name == "MemAvailable:") { |
|
|
23 available = value; |
|
|
24 } |
|
|
25 } |
|
|
26 std::string osLine; |
|
|
27 while (std::getline(OsRelease, osLine)) { |
|
|
28 size_t pos = osLine.find('='); |
|
|
29 if (pos == std::string::npos) continue; |
|
|
30 std::string key = osLine.substr(0, pos); |
|
|
31 std::string val = osLine.substr(pos + 1); |
|
|
32 if (key == "PRETTY_NAME") { |
|
|
33 distro = val.substr(1, val.size() - 2); |
|
|
34 } |
|
|
35 } |
|
|
36 long timeup = 0; |
|
|
37 while (std::getline (Uptime, uptimeText)) { |
|
|
38 std::istringstream ss2(uptimeText); |
|
|
39 double uptime; |
|
|
40 ss2 >> uptime; |
|
|
41 timeup = uptime; |
|
|
42 } |
|
|
43 std::cout << std::fixed << std::setprecision(2); |
|
|
44 std::cout << "Used: " << (total - available) / (1024.0 * 1024.0) << " GB" << "/" << total / (1024.0 * 1024.0) << "GB" << std::endl; |
|
|
45 std::cout << "Uptime: " << "Hours: " << timeup / 3600 << " Minutes: " << (timeup % 3600) / 60 << std::endl; |
|
|
46 std::cout << "OS: " << distro << std::endl; |
|
|
47 Meminfo.close(); |
|
|
48 } |