Como os arquivos /proc/net estão sendo preenchidos no Linux/Unix?

Como os arquivos /proc/net estão sendo preenchidos no Linux/Unix?

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/netarquivos.

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/netsã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 ioctlchamadas getsockoptem 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.

informação relacionada