Prima pagină > Articole > Computing > *nix > Demonizare în Perl
Demonizare în Perl
Vineri 17 februarie 2006, de
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...
[1] deşi ce voi spune se poate aplica oricăui limbaj care va produce un executabil UNIX