use POSIX qw(:sys_wait_h :errno_h :signal_h); use strict; sub runChildren { my $obj = $_[0]; my $runlist = $obj->{'runlist'}; foreach my $app (@$runlist) { my $pid; if ($pid = fork) { $SIG{CHLD} = \&reapChildren; } else { my $appargs = $app->{'args'}; exec(@$appargs); } } } sub reapChildren { my $pid; $pid = waitpid(-1,&WNOHANG); if ($pid == -1 || WIFEXITED($?)) { processApplication; } $SIG{CHLD} = \&reapChildren; } sub processApplication { #Need to know which application needs processing }