perl中使用$SIG{ALRM}处理服务超时的例子,有需要的朋友可以参考下。
注意:
该方法对使用DBI连接数据库时,可能无法正常处理连接超时的任务。
文件名:testsig.pl
复制代码 代码如下:
#!/usr/bin/perl
$timeout = 8; #这里设置超时时间,单位秒
$i = 1;
eval{
local $SIG{ALRM} = sub {print “Timed out.n “; exit(1);}; #程序超时后的返回结果
alarm $timeout;
#----------------------
#等待超时的执行程序开始
while(1){
print $i.”n”;
sleep(1);
$i ++;
}
#等待超时的执行程序结束
#-----------------------
print “Okn”;
alarm 0;
}
运行该script,等待8秒后,结果如下:
$> testsig.pl
1
2
3
4
5
6
7
8
Timed out.
$>