Hi, can you give me a hand...I am getting serious problem with my
Multithreaded Socket. Can you send me a simple code regarding this
issue. I'm under pressure to finish the code. Anyway I am sending my
code so you can pinpoint the error(TONS OF DEFUNCT PROCESSES ARE BEING
CREATED!!!!)
Tks in advance.
--------------------------------
#!/usr/up/tools/bin/perl5
push(@INC, "/usr/up/papi/lib");
require 5.002;
use strict;
use Socket;
use Carp;
my $sub; my $rc; my $self; my $zombie; my $port = X; my $proto =
getprotobyname('tcp');
my $paddr; my $Sbuff; my $Nbuff; my $child; my $iaddr;
socket(Server, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) || die
"setsockopt: $!";
bind(Server, sockaddr_in($port, INADDR_ANY)) || die "bind: $!";
listen(Server,SOMAXCONN) || die "listen: $!";
select(STDOUT);
$| = 1; # ( autoflushing)
select(Server);
$| = 1;
while(1)
{
$paddr = accept(Client,Server)|| die "Erro accept() - $!";
select(Client);
$| = 1;
if(($child = fork()) == 0)
{ ($port,$iaddr) = sockaddr_in($paddr);
while ( defined(sysread(Client,$Sbuff,300)) )
{&Retrieve_SubId($Sbuff); # GETS THE ID
close(Client);
}
exit;
}# Fim do if fork()
else{
do{
$zombie = waitpid(-1,$child);#Se tiver processo aberto, mata o
processo
print STDOUT $zombie
}until $zombie == -1;
}
close(Client); # Caso nao entre no fork()
} # Fim do while