Как заполняются файлы /proc/net в Linux/Unix?

Как заполняются файлы /proc/net в Linux/Unix?

Я работаю над сетевым монитором для Linux, без перехвата пакетов. Я планирую считывать сетевую статистику и сопутствующие данные из /proc/netфайлов.

Я знаю, что /procэто точка монтирования файловой системы процесса, которая представляет собой виртуальную файловую систему, отражающую внутреннюю структуру данных ядра.

Мне хотелось бы узнать, как он заполняется и можно ли напрямую прочитать внутреннее содержимое ОС.

решение1

/procзаполняется «живым» ядром: содержимое каталогов и файлов создается на лету, когда приложение обращается к ним. Поэтому вы не найдете никакой утилиты, которая их заполняет: если вы хотите узнать, как все туда попадает, вам придется прочитатькод ядраилидокументация ядра. В исходном коде записи создаются различными частямисетевой код. Многие записи в /proc/netдокументированы как частьсетевая документация.

Это самый низкий уровень, который можно получить, чтобы прочитать внутренности ОС. Единственный способ забраться глубже — написать драйвер ядра.

Другой способ получения сетевой информации — через ioctlи getsockoptвызовы сокетов. Иногда это удобнее в C. Я думаю, что есть информация, которую можно получить одним методом, но не другим, и наоборот, но я не знаю подробностей.

Связанный контент