(Josh Denny) wrote in message news:<. com>...
> windows, it dies after "accumulating" 64 children opened - however,
> they should all (or most) have exited by that time. Any idea how to
> get my children to exit and free up space for more connections?
>
This is probably not necessary - if the parent doesn't CARE when the
child dies, you ought to just be able to say:
$SIG{CHLD} = 'IGNORE';
> sub reaper { #to eliminate dead child processess
> $waitpid=wait;
> $SIG{CHLD}=\&reaper;
> }
> $SIG{CHLD}=\&reaper;
Take a look at client_connect and see why client_connect is hanging.
> while (accept ($client, SERVER)) {
> my ($c_port, $c_iaddr) = sockaddr_in(getpeername($client));
> my(@inetaddr) = unpack('C4', $c_iaddr);
> my $from = join('.', @inetaddr);
>
> if (my $pid = fork) { #if it is the server, then next
> close $client or die "Client socket close failed: $!";
> } elsif (defined $pid) { #a child
> client_connect($client, $from); #processes the clients connection
> exit(0);
> } else {
> die "fork error: $!"; #program dies here after 64
> client_connect's
> }
> }
> }