C/C++, сбор информации о состоянии системы на базе GNU/Linux дистрибутива
Необходимо получить всю информацию о состоянии системы на базе дистрибутива GNU/Linux средствами C/C++, Libc и других системных библиотек в составе дистрибутивов: отследить состояние процессора, каждого ядра процессора, каждого процесса, количество пользователей, количество текущих пользователей, памяти, сервисов.
В /proc/pid/, например, есть очень много информации, но открывать на каждый процесс файл (и не один десяток) - дело такое себе конечно.
В /var/run/utmp есть информация о всех текущих пользователях в системе, опять же, открытие файла.
Я в курсе, что всё можно получить из конкретного файла, но не думаю, что это единственный способ и что он верный (этож сколько надо файлов открыть/закрыть на дерево процессов).
2 вопроса:
- Можно ли всё получить (например, из /proc/*) не открывая файлы?
- Есть ли какой-то принцип и правило, по которому понятно, какую именно информацию (из каких директорий или псевдо-файловых систем) возможно получить только через открытие файла?
Ответы (1 шт):
Используй /proc/cpuinfo для получения информации о процессоре, sysinfo для получения информации о памяти, и /proc для получения информации о запущенных процессах.