Я только что использовал команду timeout
в Perl + Linux, что-то, что вы можете проверить следующим образом:
for(0..4){
my $command="sleep $_"; #your command
print "$command, ";
system("timeout 1.1s $command"); # kill after 1.1 seconds
if ($? == -1 ){ printf "failed to execute: $!" }
elsif($?&127 ){ printf "died, signal %d, %scoredump", $?&127, $?&128?'':'no '}
elsif($?>>8==124){ printf "timed out" }
else { printf "child finished, exit value %d", $? >> 8 }
print "\n";
}
Выход через 4,317 секунды:
sleep 0, child finished, exit value 0
sleep 1, child finished, exit value 0
sleep 2, timed out
sleep 3, timed out
sleep 4, timed out
Команда timeout
входит в состав всех основных "обычных" дистрибутивов Linux a.f.a.i.k, входит в состав coreutils.