$SIG{'CHLD'} = 'IGNORE'; open(STDOUT, ">>my.log"); STDOUT->autoflush(1); open(STDERR, ">>my.log"); STDERR->autoflush(1); my $sock = new IO::Socket::INET (LocalHost => 'foo.com', LocalPort => 1234, Proto => 'tcp', Listen => 5, ReuseAddr => 1 ); $sock or die("Failed to create sock: $!."); ONE: while ( 1 ) { my $new_sock = $sock->accept; if (!defined($new_sock)) { print(STDERR "Warning: Bad connect.\n"); next ONE; } if ( ! defined($child = fork) ) { print("Could not fork: $!.\n"); exit(1); } $child && next; shutdown($new_sock,2); close($new_sock); exit(0); } # End ONE close($sock); #### while ( my $child_process = waitpid(-1,WNOHANG) > 0 ) { }