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

2

Estou trabalhando em um monitor de rede para Linux, sem sniffing de pacotes. Estou planejando ler as estatísticas da rede e os dados relacionados dos arquivos /proc/net .

Eu sei que /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.

Eu gosto de saber como ele é preenchido e é possível ler diretamente os sistemas operacionais internos.

    
por SleepyLord 07.01.2015 / 16:22

1 resposta

2

/proc é preenchido "ao vivo" pelo kernel: o conteúdo dos diretórios e arquivos é construído dinamicamente quando um aplicativo os acessa. Então você não encontrará nenhum utilitário que os preencha: se você quiser saber como as coisas chegam lá, você terá que ler o código do kernel ou a documentação do kernel . No código-fonte, as entradas são criadas por várias partes do código de rede . Muitas entradas em /proc/net estão documentadas como parte da documentação de rede .

Este é o nível mais baixo possível para ler os componentes internos do sistema operacional. A única maneira de se aprofundar é escrever um driver de kernel.

Outra maneira de recuperar informações relacionadas à rede é via ioctl e getsockopt chamadas em sockets. Isso às vezes é mais conveniente em C. Eu acho que há informações que você pode obter por um método, mas não pelo outro método e vice-versa, mas eu não sei os detalhes.

    
por 08.01.2015 / 02:07