sub restart { my $self = shift; my $good_data = shift; sleep 1; use POSIX ":sys_wait_h"; kill('SIGTERM', @{$self->chld_processes}); 1 while waitpid(-1, WNOHANG) > 0; # for my $pid (@{$self->chld_processes}) { # say "WAIT $pid"; #CORRECT PID # say waitpid($pid, 0); #ALWAYS -1 # } exec($^X, $0, $ARGV[0], $good_data); exit 0; }