8.14. Функция sysinfo(): получение системной статистики

8.14. Функция sysinfo(): получение системной статистики

Функция sysinfo() возвращает системную статистике. Ее единственным аргументом является указатель на структуру типа sysinfo. Перечислим наиболее интересные поля этой структуры.

? uptime — время в секундах, прошедшее с момента загрузки системы;

? totalram — общий объем оперативной памяти;

? freeram — свободный объем ОЗУ;

? procs — число процессов, работающих в системе.

Для использования функции sysinfo() требуется включить в программу файлы <linux/kernel.h>, <linux/sys.h> и <sys/sysinfo.h>.

Программа, приведенная в листинге 8.12, отображает статистическую информацию о текущем состоянии системы.

Листинг 8.12. (sysinfo.c) Вывод системной статистики

#include <linux/kernel.h>

#include <linux/sys.h>

#include <stdio.h>

#include <sys/sysinfo.h>

int main() {

 /* Константы преобразования. */

 const long minute = 60;

 const long hour = minute * 60;

 const long day = hour * 24;

 const double megabyte = 1024 * 1024;

 /* Получение системной статистики. */

 struct sysinfo si;

 sysinfo(&si);

 /* Представление информации в понятном виде. */

 printf("system uptime : %ld days, %ld:%02ld:%021d ",

  si.uptime / day, (si.uptime % day) / hour,

  (si.uptime % hour) / minute, si.uptime % minute);

 printf("total RAM : %5.1f MB ", si.totalram / megabyte);

 printf("free RAM : %5.1f MB ",

 si.freeram / megabyte);

 printf("process count : %d ", si.procs);

 return 0;

}