Bom, dito e feito, realmente para criar um servidor que não ficasse bloqueando no read(), ou no accept(), a melhor forma(talvez única) era utilizando fcntl(). O código está um pouco sujo ainda (por exemplo, temos o readLine.c e readLine.h que eu iria utilizar para ler do buffer, mas encontrei uma forma mais “rápida”), estamos lendo do pipe duas vezes, acredito que podemos ler apenas uma vez. Detalhes, detalhes bons para um patch que farei assim que possível. Junto com o patch, vou escrever e descrever esse código completamente, para que ninguém tenha dúvidas sobre o que o fork() faz, como fazer comunicação entre filho e pai e como trabalhar com funções não bloqueadoras, mas que deveriam ser (read() e accept() neste caso).
Enfim, façam o update do svn. A documentação já foi passada para a versão 1.0.
Servidor ECHO, update
April 30th, 2008 — ANSI C, C/C++
Administração de fontes no Linux
April 30th, 2008 — Tips
Linux para iniciantes
April 30th, 2008 — Stuffs
Extremamente interessante a visão de Adrian Kingsley-Hughes sobre Linux para iniciantes (ou “12:00 flashers” como ele chama), vale a pena dar uma olhada aqui.
InnoDB X MyISAM
April 30th, 2008 — Tips
