|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 12 Feb 2004 20:44:56 To : Dmitry Y. Labutin Subject : Re: Как избавиться от зомби? -------------------------------------------------------------------------------- Dmitry Y. Labutin @ Thu, 12 Feb 2004 13:57:53 +0000 (UTC): DYL> Приветствую. DYL> Вот начало cgi-скрипта: DYL> #!/usr/bin/perl DYL> use IO::Socket; DYL> use POSIX; DYL> $| = 1; DYL> if ($daemon){ DYL> print "Запускаем демон\n"; DYL> DYL> $pid = fork; DYL> exit if $pid; DYL> die "Couldn't fork: $!" unless defined($pid); DYL> POSIX::setsid() or die "Can't start a new session: $!"; DYL> } DYL> Далее идет сам скрипт, который висит на машине бесконечно. Он по мере DYL> надобности порождает еще процессы (fork), которые отработав благополучно DYL> останавливаются. Все хорошо, но в процессах остается родительский DYL> зомби-процесс (самый первый). Что нужно сделать, чтобы он нормально DYL> завершил свою работу? Может быть не просто exit if $pid; ? Либо почитать Стивенса на тему того, зачем там потом делается второй форк, либо воспользоваться Proc::Daemon, в котором это уже реализовано. Опционально - и то, и другое. -- Artem Chuprina RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/11477e0ca939c.html, оценка из 5, голосов 10
|