Strona 1 z 1
Procesy Zombie
: 03 lipca 2009, 15:48
autor: szpuni
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?
: 03 lipca 2009, 16:50
autor: lessmian2
Ale pozostaje Ci proces zombie po kliencie? Toworzysz gdzieś procesy potomne za pomocą funkcji fork()?
: 03 lipca 2009, 18:01
autor: szpuni
Dokladnie tak:
Kod: Zaznacz cały
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
Kod: Zaznacz cały
1 Z 0 26034 20898 0 76 0 - 0 exit pts/3 00:00:00 perl <defunct>
: 04 lipca 2009, 08:16
autor: lessmian2
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:
Kod: Zaznacz cały
$pid = fork();
if ($pid) {
waitpid ($pid ,-1);
}
elsif ($pid == 0) {
print "Listening...\n";
while (<$sock>) {
.
.
.
}
exit(0);
}
else {
die "couldn't fork: $!\n";
}
: 04 lipca 2009, 18:09
autor: szpuni
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.
: 02 sierpnia 2009, 21:05
autor: leon1313
Może spróbuj na wątkach.