Реализация под linux

This commit is contained in:
re.kovalev 2021-07-16 12:46:40 +03:00
parent 1704c280aa
commit 74cdbd9401
2 changed files with 130 additions and 0 deletions

101
Memorator.cpp Normal file
View File

@ -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;
}

29
Memorator.h Normal file
View File

@ -0,0 +1,29 @@
/*Ковалев Р.Е. 2021. rekovalev.site*/
#ifdef __linux__
#include <sys/sysinfo.h>
#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
};