diff --git a/pandora_agents/unix/ChangeLog b/pandora_agents/unix/ChangeLog index 486547f1dc..c810e6632e 100644 --- a/pandora_agents/unix/ChangeLog +++ b/pandora_agents/unix/ChangeLog @@ -1,3 +1,8 @@ +2011-12-19 Ramon Novoa <rnovoa@artica.es> + + * pandora_agent: Wait for broker childs instead of ignoring + SIGCHLD. + 2011-12-19 Ramon Novoa <rnovoa@artica.es> * pandora_agent: Ignore SIGCHLD. diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 16c9914cb9..5e15d0b1a7 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -114,7 +114,7 @@ my $ConfDir = ''; my $ConfFile = 'pandora_agent.conf'; # Broker agent configuration files -my @BrokerConfFiles; +my @BrokerPid; # Configuration tokens my %Conf = ( @@ -1589,9 +1589,6 @@ sub kill_signal_handler (){ #Handler TERM signal. $SIG{'TERM'} = \&kill_signal_handler; -# Ignore SIGCHLD -$SIG{'CHLD'} = 'IGNORE'; - # Check command line arguments print_usage unless ($#ARGV == 0); $ConfDir = fix_directory ($ARGV[0]); @@ -1719,6 +1716,8 @@ while (1) { # Execute last; + } else { + push (@BrokerPid, $main_agent); } } @@ -1851,6 +1850,9 @@ while (1) { # Sleep if main agent if ($main_agent != 0) { + foreach my $broker_pid (@BrokerPid) { + waitpid ($broker_pid, 0); + } sleep ($Conf{'interval'}); } # Finish if broker agent