C/C++, сбор информации о состоянии системы на базе GNU/Linux дистрибутива

Необходимо получить всю информацию о состоянии системы на базе дистрибутива GNU/Linux средствами C/C++, Libc и других системных библиотек в составе дистрибутивов: отследить состояние процессора, каждого ядра процессора, каждого процесса, количество пользователей, количество текущих пользователей, памяти, сервисов.

В /proc/pid/, например, есть очень много информации, но открывать на каждый процесс файл (и не один десяток) - дело такое себе конечно.

В /var/run/utmp есть информация о всех текущих пользователях в системе, опять же, открытие файла.

Я в курсе, что всё можно получить из конкретного файла, но не думаю, что это единственный способ и что он верный (этож сколько надо файлов открыть/закрыть на дерево процессов).

2 вопроса:

  1. Можно ли всё получить (например, из /proc/*) не открывая файлы?
  2. Есть ли какой-то принцип и правило, по которому понятно, какую именно информацию (из каких директорий или псевдо-файловых систем) возможно получить только через открытие файла?

Ответы (1 шт):

Автор решения: Slavick Werewolf

Используй /proc/cpuinfo для получения информации о процессоре, sysinfo для получения информации о памяти, и /proc для получения информации о запущенных процессах.

→ Ссылка