[Livro] The Linux Programming Interface

- por Sergio Prado

Categorias: Livros Tags: ,

Recentemente recebi em mãos uma cópia do livro “The Linux Programming Interface“, de Michael Kerrisk. Confesso que fiquei positivamente surpreso com a qualidade e o conteúdo do livro, que apesar de estar ainda em sua primeira edição, publicado em 2010, me parece a décima, pelo volume de informações que encontramos nele.

linux-programming-interface

O objetivo principal do livro é descrever toda a interface de programação (API) do Linux, chamadas do sistema, bibliotecas e outras interfaces de baixo nível. Quer alguém melhor para escrever sobre a API do Linux do que Michael Kerrisk, o responsável pelo projeto man-pages do Linux?

Desde o bons “Advanced Programming in the UNIX Environment” e  “The Art of UNIX Programming“, eu não via um livro tão completo. Repito, completo mesmo. O livro é uma verdadeira bíblia. São 1.506 páginas divididas em 64 capítulos e 6 apêndices, com tudo o que se pode imaginar sobre a interface de programação Linux.

Os primeiros capítulos começam pelo histórico do Linux e conceitos básicos de programação para ambientes UNIX, incluindo processos, alocação de memória e sistemas de arquivo. Alguns capítulos são dedicados à comunicação entre processos (IPC), threads, pipes, fifos, message queues, semáforos, incluindo programação segura; e depois passando para conceitos mais avançados como memória compartilhada, memória virtual, terminais e pseudoterminais.  Além de dedicar alguns capítulos para conceitos de socket e programação em redes.

Todos os capítulos contém exercícios para praticar e fixar alguns conceitos.

Enfim, se hoje eu tivesse que escolher apenas um livro sobre programação Linux para levar em qualquer lugar, “The Linux Programming Interface” seria o livro. Recomendo para qualquer um que quiser aprender ou se aprofundar na API do Linux.

Um abraço,

Sergio Prado

  • Jovino Gonçalves

    Salve! Sergio, blz? Seu blog e seus artigos são show! Uso GNU/Linux desde 1999, minha primeira distro foi o conectiva linux 3.0 guarani. Vivi todos esses anos como um entusiasta e amante de Software livre e Código aberto lendo muitos howtos e seguindo a comunidade. Trabalho com redes e gostaria muito de saber como começar a desenvolver ambientes linux embarcado. Esse sem dúvida é o ano do kernel do linux, pode ser que nos desktops e para usuários final estamos longe ainda, mas para esse mercado ainda não me interesso. Você teria algum roteiro de estudo para preencher vagas como estas:
    http://apps.facebook.com/workforus/tab/view?job_id=103437&ref_id=94786&page_id=123874067680100
    A padtec ganhou o leilão da telebras e eles irão acelerar o desenvolvimento aqui no Brasil. Viva! :)

    • Olá Jovino!

      Desculpe a demora na resposta. Sua mensagem caiu na caixa de spam do WordPress (?) e descobri isso agora… :)

      Sou um usuário Linux um pouco mais recente que você, mas compartilhamos da mesma paixão! :)

      Estou trabalhando em um artigo sobre como se tornar um desenvolvedor de linux embarcado, que deverá responder algumas das suas perguntas.

      Deverá sair nos próximos dias… Continue acompanhando o blog!

      Um abraço!

  • Daniel Grillo

    Olá Sérgio,
    Desculpe-me se for uma pergunta meio básica, mas qual seria a vantagem de aprender ou se aprofundar na API do Linux, principalmente no Brasil?
    Outras perguntas:
    É uma boa investir nisso para quem está começando na área?
    Que tipo de demanda atende o profissional especializado nisso?
    Obrigado

  • Olá Daniel,

    Ótima pergunta! É claro que não podemos comparar os mercados da Europa e dos EUA com o Brasil (ainda). Mas vejo nos últimos anos uma demanda crescente de projetos com Linux em terras tupiniquins.

    Nos últimos 4 anos tenho trabalhado com Linux embarcado. Todos os meses são divulgadas oportunidades nesta área no grupo sis_embarcados (bascamente ARM + Linux embarcado). Muitas dessas demandas demoram para ser atendidas.

    Ou seja, temos um mercado emergente, e pouca gente ainda competente no assunto. Quem conseguir uma boa formação + experiencia nessa área terá um diferencial forte no mercado.

    Abraços!

  • Marcelo Jo

    Olá Sérgio!
    Estava relendo esse post pois estou a procura de um livro pra poder aprender a programar no linux. Esse livro seria mais para software de baixo nivel, digamos device drivers ou pra desenvolver aplicativos mesmo?
    Fazendo a pergunta ao contrário, esse livro seria indicado pra que tipo de programador e quais tipos de programas?

  • Marcelo Jo

    Olá Sérgio!
    Estava relendo esse post pois estou a procura de um livro pra poder aprender a programar no linux. Esse livro seria mais para software de baixo nivel, digamos device drivers ou pra desenvolver aplicativos mesmo?
    Fazendo a pergunta ao contrário, esse livro seria indicado pra que tipo de programador e quais tipos de programas?

    • Olá Marcelo!

      Este é “O LIVRO” para desenvolvimento de aplicações para Linux. Ele contém uma descrição bem legal de toda a API de um sistema GNU/Linux.  É o livro ideal para o desenvolvedor de aplicações Linux (seja um sistema embarcado ou não).

      Um abraço.

  • Renan

    Olá, Sérgio Prado!

    Se pudesse escolher um livro para ter um primeiro contato com a programação Linux, esse também seria o livro? Tenho interesse em desenvolvimento de aplicações para Linux e, também, em me tornar um desenvolvedor do próprio sistema. Esse é o livro indicado para suprir minhas necessidades?

    • Olá Renan,

      Com certeza. Este é atualmente o livro que melhor descreve a API do Linux, com uma linguagem simples e clara, tanto para o aprendizado quanto para consulta.

      Um abraço.

  • João

    Olá Sérgio!

    No livro, snti falta apenas de um capítulo “Introdutório” sobre como instalar um ambiente para programação, os softwares necssários, como deve ser fazer a construção dos Makefiles etc., enfim, um capítulo que aborde os passos básicos da programação em Linux, ou seja, um capítulo que responda a questão “Ok, todos aqueles códigos em linguagem C são passados, mas como eu preparo eles, como eu preparo um pacote, com Makefile, para dsitribuição?”.

    Você sabe onde encontrar um artigo sobre isso?

    Até mais,
    João.

    • Olá João,

      É verdade, mas acho que fugiria um pouco do escopo do livro. De qualquer forma, você deve encontrar vários tutoriais sobre Makefiles no Google.

  • Saopedro da Serra

    Caro Sérgio, vc usa C puro em seus projetos ou tb usa cpp? Essas linguagens possuem performances diferentes? Vc acha que a orientação O. tb se aplica a baixo nível? Sei q os assuntos são polêmicos mas gostaria de saber a opinião sincera de alguém com seu conhecimento.
    Forte Abraço.
    Carlos.

    • Olá Carlos,

      Não sou expert em C++, mas gosto de ver o uso de C++ em camadas de abstração mais altas como bibliotecas gráficas. O uso de C++ para conversar com o hardware por exemplo não me agrada. Neste caso eu prefiro C mesmo.

      • Renatho Azevedo

        Sergio , sei faz muito tempo 2 anos desde a pergunta, mas , sou novo em c/c++ , porém uso uma classes com abstração, que comunica com varias automações de bomba de gasolina e outra classe que comunica com um microcontrolador, você acha que o uso de c++ para conversar com esses hardwares não seria bom ?, e o que você poderia me indicar pra comunicação entre esses hardwares, threads ou inter processo ? Uso o sistema Angstrom no microcontrolador.

        • Olá Renatho,

          Não vejo nenhum problema no uso do C++ em sistemas embarcados, desde que o código seja bem feito (funcional, fácil de entender, fácil de dar manutenção, etc) e de que o compilador usado seja bom.

          O uso de threads ou processos vai depender das características da aplicação. O livro citado no artigo contém um capítulo muito bom sobre este tema.

          Um abraço.

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.