in reply to Re: IO::Socket Not responding after period of time and traffic!
in thread IO::Socket Not responding after period of time and traffic!

Actually, wait returns the PID of the just reaped child, and under the Windows fork emulation, emulated forked children get negative PIDs, so a check for equality to -1 sounds saner than checking for >0.

Replies are listed 'Best First'.
Re^3: IO::Socket Not responding after period of time and traffic!
by rowdog (Curate) on Aug 16, 2010 at 19:26 UTC

    Well, okay, that's a good point but I'm not crazy enough to want to deal with fork and Windows (use threads;)

    My point is that most UNIX like OSes treat a return of zero from waitpid with the WNOHANG option as a special case that says "there are no stopped, continued or exited children". If you idle loop waiting for your children to exit, you won't be getting out of the signal handler often enough to handle new connections. Just testing for -1 isn't enough.