my $pid = fork();
if ($pid==0) {
    exec "sleep 15"  or die "couldn't exec: $!";
}
eval {
    local $SIG{ALRM} = sub { die "alarm clock restart" };
    alarm 10;
    waitpid($pid,0);
    alarm 0;
};
if ($@ =~ /alarm clock restart/) {
    print "process stalled, killing it\n";
    kill 'SIGTERM', $pid;
}
  
   back to test 
  
  (C) 1998-2017 Olaf Klischat  <olaf.klischat@gmail.com>