I’m alive and doing well…

Pessoal, eu não morri não, isso se chama final de semestre na faculdade. Mas aos poucos as coisas ficam mais tranquilas.
Até lá, fiquem com a documentação do servidor Bucket Sort, eu demorei para lançar esse código pois era para um trabalho da faculdade, mas agora, ainda não 100% pronto, mas, lá está, assim que eu tiver tempo eu explico com calma a idéia ok? A documentação está aqui.

Servidor ECHO, update

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

Mais um para a biblioteca de programas C, dessa vez é um servidor ECHO modificado que aceita até 10 conexões, concorrentes, ouve na porta 7777 e se receber a string “STOP SERVER” termina o servidor.
Mais tarde eu comento sobre esse programa, mas ele limpa todos os processos, e possui relativamente uma boa manutenção de memória. Fiz esse programa mais para demonstrar como funciona o fork() e como fazer um filho sair corretamente e o pai pegar essa saida e tratar caso ela seja um erro, nada mais clássico que um servidor.
Porém, como nada é perfeito, a função read() é do tipo locking, ou seja ela trava o programa até conseguir ler alguma coisa do buffer, travando o servidor. Ainda estou trabalhando em como arrumar isso, acredito que com fcntl() consigo resolver isso.
Quem quiser ver essa primeira versão, o svn está http://svn.geekvault.org/c/echo/.
A documentação você encontra aqui.