my_kill(){ $pid = shift; kill $pid; print "I killed $pid"; } ... if (($pid = fork()) == 0){ do_child_stuff; } else { // set a timeout. if pid does not die in 60 // seconds call my_kill with $pid as the arg wait_for_pid($pid, 60, &my_kill); }