dead_child_handler also takes care of reaping pingpong server dead child processes
This commit is contained in:
		@@ -110,6 +110,19 @@ sub exit_signal_handler {
 | 
				
			|||||||
    exit;
 | 
					    exit;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#**********************************************************************
 | 
				
			||||||
 | 
					# dead_child_handler takes care of reaping dead child processes.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					sub dead_child_handler {
 | 
				
			||||||
 | 
					    use POSIX ":sys_wait_h";
 | 
				
			||||||
 | 
					    local $!; # preserve errno
 | 
				
			||||||
 | 
					    local $?; # preserve exit status
 | 
				
			||||||
 | 
					    while (waitpid(-1, &WNOHANG) > 0) {
 | 
				
			||||||
 | 
					        select(undef, undef, undef, 0.05);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    $SIG{CHLD} = \&dead_child_handler;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#**********************************************************************
 | 
					#**********************************************************************
 | 
				
			||||||
# getlogfilename returns a log file name depending on given arguments.
 | 
					# getlogfilename returns a log file name depending on given arguments.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -204,6 +217,7 @@ if($proto !~ /^(ftp|imap|pop3|smtp)\z/) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
$SIG{INT} = \&exit_signal_handler;
 | 
					$SIG{INT} = \&exit_signal_handler;
 | 
				
			||||||
$SIG{TERM} = \&exit_signal_handler;
 | 
					$SIG{TERM} = \&exit_signal_handler;
 | 
				
			||||||
 | 
					$SIG{CHLD} = \&dead_child_handler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub sysread_or_die {
 | 
					sub sysread_or_die {
 | 
				
			||||||
    my $FH     = shift;
 | 
					    my $FH     = shift;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user