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){}