Programação do sistema: como coletar informações?

7

De acordo com esta pergunta , uma boa maneira de aprender a programação do sistema seria implementar as ferramentas existentes. Eu decidi tentar reescrever ls e ps .

Minha pergunta é como proceder para obter documentação para tal?

  • Onde posso encontrar a API das chamadas de sistema necessárias para consultar o kernel, o sistema de arquivos, etc ...

  • Eu pensei que talvez pudesse dar uma olhada no código-fonte das ferramentas GNU. Onde posso encontrá-lo?

  • Existe alguma documentação (esperançosamente disponível gratuitamente on-line) que vocês recomendariam sobre por onde começar?

por rahmu 02.10.2011 / 00:29

2 respostas

9

Você pode usar o manual da Glibc como referência. Não é para principiantes absolutos, mas se você é razoavelmente fluente em C, você deve ser capaz de ler uma seção e escrever um programa de trabalho.

Você pode encontrar a fonte das ferramentas GNU no site GNU ; a maneira mais fácil de obtê-lo é obter os pacotes de origem em sua distribuição do Linux (por exemplo, apt-get source coreutils se sua distribuição usa utilitários de empacotamento do Debian). Eu recomendo começar com BusyBox ao invés das ferramentas GNU. BusyBox é um conjunto de utilitários para sistemas Linux embarcados; é menor e mais simples que os utilitários GNU.

Você pode executar strace ls para ver o que o sistema está chamando ls . Note que quando você escreve um programa, você não chama chamadas de sistema diretamente, você chama funções na biblioteca C que fazem chamadas do sistema. Para coisas como manipulação de arquivos, as funções da biblioteca C, como open e read , são muito próximas das chamadas do sistema.

Para aprender, um livro (em papel) é geralmente útil. Programação avançada no ambiente UNIX® (APUE ) é um clássico. Se você conseguir, certifique-se de obter a segunda edição, já que a primeira é bastante antiga. Este livro é a referência, mas outros livros podem ser mais adequados para iniciantes; compre por aí.

    
por 02.10.2011 / 01:07
1

Em linux , comandos como ps , free e top são implementados lendo informações do proc sistema de arquivos.

   The proc file system is a pseudo-file system which is used as an inter-
   face to kernel data structures.  It is commonly mounted at /proc.  Most
   of  it  is  read-only,  but  some  files  allow  kernel variables to be
   changed.

Comece em man 5 proc e não se esqueça de que todos esses utilitários são de código aberto, para que você também possa espiar código .

    
por 02.10.2011 / 11:50