[Rio-pm] programa "fênix"

eden edencardim em gmail.com
Terça Dezembro 4 16:00:47 PST 2007


On Dec 4, 2007 8:13 PM, Pedro Henrique <phikeda em gmail.com> wrote:
> Amigos,
>
> Estou com dificuldade para fazer uma prova de conceito aqui, um programa que
> periodicamente se recarregue, matando a instância antiga e executando a
> nova.
>
> Consigo fazer o programa ler a si mesmo com o $0, e imagino que um fork()
> seguido de um eval ou mesmo um system() seja necessário, mas não entendo
> muito bem de forks e não sei como "matar" o pai, devolvendo memória/recursos
> para o sistema e fazendo a nova instância rodar como se a anterior nunca
> tivesse existido.
>
> Alguém pode me dar uma luz?

Acho má idéia ter um processo auto-gerenciado, acho que o que você
quer é um gerenciador de processos boss-worker. Nesse modelo, um
processo (o boss) monitora outros processos (os workers), criando ou
destruindo workers de acordo com algum critério. Tem várias
implementações disponíveis no CPAN que seguem esse modelo. Como
exemplo, cito o
http://search.cpan.org/author/RHANDOM/Net-Server-0.97/lib/Net/Server/PreFork.pm
Dá uma lida no fonte, é bastante instrutivo.

-- 
edenc.vox.com


Mais detalhes sobre a lista de discussão Rio-pm