Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Mam tutaj skrypt dzialajacy w trybie serwer klient:
my $pid = fork(); if (!$pid) { # this is child process print "Listening...\n"; while (<$sock>) { jakies_tam_funkcje(); } logprint "Child caught disconnect\n"; system("touch disconnect.dis"); exit; }
Chodzi o to ze jezeli klient rozlaczy sie z serwerem to zostaja procesy zombie.
Wiec przerobilem to tak:
my $pid = fork(); if ($pid) { waitpid($pid ,-1); } elsif ($pid == 0) { # this is child process print "Listening...\n"; while (<$sock>) { jakis_tam_kod(); } logprint "Child caught disconnect\n"; system("touch disconnect.dis"); exit(0); } else { die "couldn`t fork: $!\n"; }
Ale niestety nie pomoglo to w nietworzeniu zombie.
Wiem ze musze uzyc waitpid albo wait.
Tylko ze nie wiem dokladnie gdzie.
Domyslam sie ze powinno to wyladowac po
elsif ($pid == 0) { waitpid($pid, ?) i reszta kodu }
Nie wiem czy mysle dobrze i co powinienem wstawic czy wartosc -1 czy moze 0 albo 1.
Offline