Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153237
  • 博文数量: 42
  • 博客积分: 972
  • 博客等级: 准尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-17 10:59
文章分类

全部博文(42)

文章存档

2014年(2)

2013年(5)

2012年(35)

我的朋友

分类: Python/Ruby

2012-11-29 11:05:59

使用$SIG{ALRM}处理服务超时
注意:该方法对使用DBI连接数据库时,可能无法正常处理连接超时的任务

##############################

script 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 “Ok\n”;
alarm 0;
}

运行该script,等待8秒后,出现如下结果:

$> testsig.pl
1
2
3
4
5
6
7
8
Timed out.
$>
阅读(1335) | 评论(0) | 转发(0) |
0

上一篇:Perl fork

下一篇:Perl OOP

给主人留下些什么吧!~~