Estoy trabajando en un monitor de red para Linux, sin rastreo de paquetes. Estoy planeando leer las estadísticas de la red y los datos relacionados de /proc/net
los archivos.
Sé que /proc
es el punto de montaje del sistema de archivos del proceso, que es un sistema de archivos virtual que refleja la estructura de datos interna del kernel.
Me gusta saber cómo se completa y si es posible leer los componentes internos del sistema operativo directamente.
Respuesta1
/proc
El kernel lo completa “en vivo”: el contenido de los directorios y archivos se crea sobre la marcha cuando una aplicación accede a ellos. Por lo tanto, no encontrará ninguna utilidad que los pueble: si quiere saber cómo llegan las cosas allí, tendrá que leer elcódigo del núcleoo eldocumentación del núcleo. En el código fuente, las entradas son creadas por varias partes delcódigo de red. Muchas entradas /proc/net
están documentadas como parte deldocumentación de redes.
Este es el nivel más bajo posible para leer los componentes internos del sistema operativo. La única forma de profundizar más es escribir un controlador de kernel.
Otra forma de recuperar información relacionada con la red es mediante ioctl
llamadas getsockopt
a sockets. Esto a veces es más conveniente en C. Creo que hay información que se puede obtener con un método pero no con el otro y viceversa, pero no conozco los detalles.