--- loncom/lond 2002/02/05 18:05:47 1.66 +++ loncom/lond 2002/02/06 13:34:21 1.67 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.66 2002/02/05 18:05:47 www Exp $ +# $Id: lond,v 1.67 2002/02/06 13:34:21 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -163,9 +163,13 @@ $children = 0; # cu sub REAPER { # takes care of dead children $SIG{CHLD} = \&REAPER; my $pid = wait; - $children --; - &logthis("Child $pid died"); - delete $children{$pid}; + if (defined($children{$pid})) { + &logthis("Child $pid died"); + $children --; + delete $children{$pid}; + } else { + &logthis("Unknown Child $pid died"); + } } sub HUNTSMAN { # signal handler for SIGINT @@ -204,13 +208,12 @@ sub checkchildren { foreach (sort keys %children) { unless (-e "$docdir/lon-status/londchld/$_.txt") { &logthis('Child '.$_.' did not respond'); - kill 9 => $_; - $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; - $subj="LON: $perlvar{'lonHostID'} killed lond process $_"; - system("echo 'Killed lond process $_.' |\ - mailto $emailto -s '$subj' > /dev/null"); + kill 9 => $_; + $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; + $subj="LON: $perlvar{'lonHostID'} killed lond process $_"; + my $result=`echo 'Killed lond process $_.' | mailto $emailto -s '$subj' > /dev/null` $execdir=$perlvar{'lonDaemons'}; - system("cp $execdir/logs/lond.log $execdir/logs/lond.log.".$_); + $result=`/bin/cp $execdir/logs/lond.log $execdir/logs/lond.log.$_` } } }