您的位置:首页 > 其它

Perl $SIG{ALRM}处理服务超时

2009-06-01 17:30 155 查看
Perl $SIG{ALRM}处理服务超时
#!/usr/bin/perl
some_sub();
some_sub();
sub some_sub {
  eval {
    local $SIG{ALRM} = sub {die "died in SIG ALRM";}; #超时处理过程
    alarm(1);#设定1秒钟后如果下面的代码没处理完,则进入超时处理过程
	#做事情
    my $i=0;
    $i++ while 1;
    alarm(0);#事情已经做完,取消超时处理设置 
  };
  if ($@) {
    if ($@ =~ /died in SIG ALRM/) {
      print "caught the error";
    }
    else {
      print $@;
    }
  }
}

例子:每秒打印一个"alarm"
#!/usr/bin/perl -W
$SIG{ALRM}=sub {print "alarm./n";alarm(1)}; #超时处理
alarm(1);#1秒后进入超时处理
while(1){}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: