我经常使用以下模式设置Perl中特定代码片段的运行时间的上限:
my $TIMEOUT_IN_SECONDS = 5;
eval {
local $SIG{ALRM} = sub { die "alarm\n" };
alarm($TIMEOUT_IN_SECONDS);
# do stuff that might timeout.
alarm(0);
};
if ($@) {
# handle timeout condition.
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
cjm*_*cjm 10
你可能想看看Sys :: SigAction.我自己没有用它,但它有一些发光的评论.
需要注意的一件事是"可能超时的东西"是否使用sleep或alarm本身.此外,在错误处理代码中,我假设您已准备好除超时之外的错误.