Estou trabalhando em um monitor de rede para Linux, sem detecção de pacotes. Estou planejando ler as estatísticas da rede e os dados relacionados dos /proc/net
arquivos.
Eu sei que esse /proc
é o ponto de montagem do sistema de arquivos do processo, que é um sistema de arquivos virtual que reflete a estrutura de dados interna do kernel.
Gosto de saber como ele é preenchido e é possível ler diretamente os componentes internos do sistema operacional.
Responder1
/proc
é preenchido “ao vivo” pelo kernel: o conteúdo dos diretórios e arquivos é construído dinamicamente quando um aplicativo os acessa. Portanto, você não encontrará nenhum utilitário que os preencha: se quiser saber como as coisas chegam lá, você terá que ler ocódigo do núcleoou odocumentação do kernel. No código-fonte, as entradas são criadas por várias partes docódigo de rede. Muitas entradas /proc/net
são documentadas como parte dodocumentação de rede.
Isso é o mais baixo possível para ler os componentes internos do sistema operacional. A única maneira de ir mais fundo é escrever um driver de kernel.
Outra maneira de recuperar informações relacionadas à rede é por meio de ioctl
chamadas getsockopt
em soquetes. Às vezes, isso é mais conveniente em C. Acho que há informações que você pode obter por um método, mas não pelo outro método e vice-versa, mas não conheço os detalhes.