旧博客第三弹:
在linux下,执行程序时,有一个需求就是在一定的时间内执行完成,未执行完成则退出。下面是工作中经常使用的一个perl程序,可以设置超时,通过alarm信号机制进行控制
执行命令 ./timeout.pl -c command -t timeout
eg: ./timeout.pl -c "./run.sh" -t 180
#!/usr/bin/perl -wuse strict;use Getopt::Std;my $result;my % opts;getopt('ct', /%opts);sub ss_h(){ eval { local $SIG{ALRM} = sub{die "alarm/n"}; alarm $opts{ 't'}; #$result=`$opts{ 'c'}`; system($opts{ 'c'}); $result = $?; alarm 0; }; if ($@ and $@ =~ /alarm/) { kill('INT', $); exit (1); } elsif ( $result == 0 ){ exit (0); }else { exit (1); }}&ss_h();