|
Procesy Zombie
szpuni - 03-07-2009 15:48
Witam,
Mam maly skrypt napisany w perlu ktory sobie nasluchuje na jakims tam porcie. Klient wysyla zadania aktywujace jakies funkcje, w tym wypadku regolki iptables.
Gdy client rozlaczy sie z serwerem powstaje mi proces zombie. Chcialbym dodac funkcje do tego aby procesy zombie byly zabijane automatycznie. Wiem ze istnieje jakas opcja perla aby to osiagnac.
Slyszal ktos moze o tym?
lessmian2 - 03-07-2009 16:50
Ale pozostaje Ci proces zombie po kliencie? Toworzysz gdzieś procesy potomne za pomocą funkcji fork()?
szpuni - 03-07-2009 18:01
Dokladnie tak: while(1) { &initialise; $sock = IO::Socket::INET->new(PeerAddr => "192.168.1.133", PeerPort => 2424, Timeout => 2) or logprint("Can't connect! $!\n"); while (!$sock) { sleep(10);
$sock = IO::Socket::INET->new(PeerAddr => "192.168.1.133", PeerPort => 2424, Timeout => 2) or logprint("Can't connect! $!\n"); #$sock = IO::Socket::INET->new("192.168.1.133:2425") or print("\nCan't connect! $!\n"); } &initialise;
my $pid = fork(); if (!$pid) { # this is child process print "Listening...\n"; while (<$sock>) {
Nie jest to kod napisany przezemnie chce go tylko usprawnic.
wykaz z ps
1 Z 0 26034 20898 0 76 0 - 0 exit pts/3 00:00:00 perl <defunct>
lessmian2 - 04-07-2009 08:16
Poczytaj sobie trochę o tym np na Wikipedii. A tymczasem spróbuj zmodyfikować część odpowiadającą za tworzenie procesów potomnych w taki sposób:
$pid = fork(); if ($pid) { waitpid ($pid ,-1); } elsif ($pid == 0) { print "Listening...\n"; while (<$sock>) { . . . } exit(0); } else { die "couldn't fork: $!\n"; }
szpuni - 04-07-2009 18:09
Dobrze, dziękuję za podpowiedź.
Sprawdzę to i zobaczymy co z tego wyjdzie.
Pozdrawiam.
[Dodano: 2009-07-09, 10:40] Niestety rozwiązanie nie załatwia sprawy.
Problem w tym, że gdy klient jest połączony z serwerem jest dobrze. Ale gdy klient się rozłączy z serwerem od razu mam proces zombie.
Potrzebuję czegoś takiego gdy się rozłączy klient żeby zabił mi proces dziecka.
leon1313 - 02-08-2009 21:05
Może spróbuj na wątkach.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|