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