|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 12 Oct 2000 13:50:00 To : max a sazonoff Subject : Re: fork & wait -------------------------------------------------------------------------------- <max_a_sazonoff@p65.f8.n5004.z2.fidonet.org> wrote: mas> Hi, All ! mas> хм. где я не прав, или почему остаются зомби? mas> после некоторого времени при выполнении нижеприведенной программы у меня mas> начинаются копиться зомби. и в конце концов все доходит до того, что новые mas> форки mas> вообще не создаются... а должно быть всегда 20 работающих форков.... mas> спрашивается кто виноват и что делать? Виноват, как обычно, ты, а читать perldoc -f wait, указанный там ман и возможно, еще что-нибудь по архитектуре UNIX. Общая идея - после сдыхания ребенка надо вычистить соответствующее место в таблице процессов, получить код завершения и прочую информацию. Вызовом wait. mas> #!/usr/bin/perl mas> $SIG{CHLD} = \&kc; mas> sub kc { mas> wait; mas> $SIG{CHLD} = \&kc; mas> $i--; mas> } mas> srand; mas> $i=0; mas> while (1) { mas> $pid = fork; mas> die "Couldn't fork: $!" unless defined($pid); mas> if ($pid == 0) { mas> sleep(rand(20)); mas> exit; mas> } mas> else { mas> $i++; mas> if ($i>20) { mas> sleep(50); mas> } mas> } mas> } mas> best regards, max a sazonoff. icq#19373869 -- Счастливо! Ран. --- ifmail v.2.14.os-p7-tma3 * Origin: MemoNet (2:5020/371.32@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/17121f35be5bd.html, оценка из 5, голосов 10
|