From: Yang Tse Date: Mon, 21 Dec 2009 14:43:29 +0000 (+0000) Subject: dead_child_handler also takes care of reaping pingpong server dead child processes X-Git-Tag: curl-7_20_0~230 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa188eec7be3baf851eb7f41874e1410be87bbc3;p=thirdparty%2Fcurl.git dead_child_handler also takes care of reaping pingpong server dead child processes --- diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index a73db0facc..cb60172e03 100644 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -110,6 +110,19 @@ sub exit_signal_handler { 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. # @@ -204,6 +217,7 @@ if($proto !~ /^(ftp|imap|pop3|smtp)\z/) { $SIG{INT} = \&exit_signal_handler; $SIG{TERM} = \&exit_signal_handler; +$SIG{CHLD} = \&dead_child_handler; sub sysread_or_die { my $FH = shift;