From 74cdbd9401879f17ceb46038837b1e60b4337f53 Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Fri, 16 Jul 2021 12:46:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Memorator.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ Memorator.h | 29 +++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 Memorator.cpp create mode 100644 Memorator.h diff --git a/Memorator.cpp b/Memorator.cpp new file mode 100644 index 0000000..c174711 --- /dev/null +++ b/Memorator.cpp @@ -0,0 +1,101 @@ +/*Ковалев Р.Е. 2021. rekovalev.site*/ + +#include "Memorator.h" + +/*Статическое поле класса Memorator*/ +#ifdef __linux__ +sysinfo Memorator::info; +#endif + +/*Заполняет поле с информацией класса Memorator данными от системы*/ +void Memorator::ask() +{ + #ifdef __linux__ + sysinfo(&info); + #endif +} + +/*Возвращает общее кол-во памяти в байтах*/ +unsigned long Memorator::getTotalRam_B() +{ + #ifdef __linux__ + ask(); + return info.totalram; + #endif +} + +/*Возвращает общее кол-во памяти в килобайтах*/ +unsigned long Memorator::getTotalRam_KB() +{ + return getTotalRam_B()/1000; +} + +/*Возвращает общее кол-во памяти в мегабайтах*/ +unsigned long Memorator::getTotalRam_MB() +{ + return getTotalRam_KB()/1000; +} + +/*Возвращает общее кол-во свободной памяти в байтах*/ +unsigned long Memorator::getFreeRam_B() +{ + #ifdef __linux__ + ask(); + return info.freeram; + #endif +} + +/*Возвращает общее кол-во свободной памяти в килобайтах*/ +unsigned long Memorator::getFreeRam_KB() +{ + return getFreeRam_B()/1000; +} + +/*Возвращает общее кол-во свободной памяти в мегабайтах*/ +unsigned long Memorator::getFreeRam_MB() +{ + return getFreeRam_KB()/1000; +} + +/*Возвращает общее кол-во памяти подкачки в байтах*/ +unsigned long Memorator::getTotalSwap_B() +{ + #ifdef __linux__ + ask(); + return info.totalswap; + #endif +} + +/*Возвращает общее кол-во памяти подкачки в килобайтах*/ +unsigned long Memorator::getTotalSwap_KB() +{ + return getTotalSwap_B()/1000; +} + +/*Возвращает общее кол-во памяти подкачки в мегабайтах*/ +unsigned long Memorator::getTotalSwap_MB() +{ + return getTotalSwap_KB()/1000; +} + +/*Возвращает общее кол-во свободной памяти подкачки в байтах*/ +unsigned long Memorator::getFreeSwap_B() +{ + #ifdef __linux__ + ask(); + return info.freeswap; + #endif +} + +/*Возвращает общее кол-во свободной памяти подкачки в килобайтах*/ +unsigned long Memorator::getFreeSwap_KB() +{ + return getFreeSwap_B()/1000; +} + +/*Возвращает общее кол-во свободной памяти подкачки в мегабайтах*/ +unsigned long Memorator::getFreeSwap_MB() +{ + return getFreeSwap_KB()/1000; +} + diff --git a/Memorator.h b/Memorator.h new file mode 100644 index 0000000..8c5a3ea --- /dev/null +++ b/Memorator.h @@ -0,0 +1,29 @@ +/*Ковалев Р.Е. 2021. rekovalev.site*/ + +#ifdef __linux__ +#include +#endif + +/*Класс для работы с информацией об оперативной памяти*/ +class Memorator +{ + public: + static unsigned long getTotalRam_B(); + static unsigned long getTotalRam_KB(); + static unsigned long getTotalRam_MB(); + static unsigned long getFreeRam_B(); + static unsigned long getFreeRam_KB(); + static unsigned long getFreeRam_MB(); + static unsigned long getTotalSwap_B(); + static unsigned long getTotalSwap_KB(); + static unsigned long getTotalSwap_MB(); + static unsigned long getFreeSwap_B(); + static unsigned long getFreeSwap_KB(); + static unsigned long getFreeSwap_MB(); + + private: + static void ask(); + #ifdef __linux__ + static sysinfo info; + #endif +};