Prima pagină > Articole > Computing > *nix > Demonizare în Perl

Demonizare în Perl

Vineri 17 februarie 2006, de Valentin Murariu

Am invăţat, in fine şi după mult timp pierdut in error-and-trial, ce inseamnă să programezi un demon UNIX in Perl [1].

Un exemplu care nu merge:

Unde codul procedurii daemonize() este:

Doamne, cat timp am pierdut să inţeleg de ce la linia $conf = Config::Simple->new(... demonul meu murea. Aşa că, acum ca am rezovat taina asta pentru mine, m-am decis să o impărtăşesc şi cu alţii - poate o mai fi cineva interesat.

’Problema’ mea venea din faptul că inăuntrul Proc::Daemon::Init este apelat chdir "/";, ceea ce face ca la linia cu pricina expresia $dir . "../etc/" . $basename . ".conf" să nu aibă nici o valoare căci conţinea o cale relativă către un fişier.

Aşadar Config::Simple->new(... murea cu un die "Something went wrong. No supported configuration file syntax found";, pe care mesaj de eroare nu aveam cum să-l văd niciunde, căci Proc::Daemon::Init inchide toţi descriptorii de fişiere şi redirijează STDIN, STDOUT, STDERR către /dev/null.

Codul care merge arată aşa:

Distracţie plăcută şi aveţi grijă să citiţi bine in manualele UNIX ce inseamnă cu adevărat să demonizezi un proces, asta aşa, ca să nu aveţi aceleaşi ’uimiri’ ca şi mine...


[1deşi ce voi spune se poate aplica oricăui limbaj care va produce un executabil UNIX