alarm EXPR alarm |
设置“报警”,导致当前进程在EXPR秒内收到一个SIGALRM信号。如果EXPR被忽略,$ _的值来代替。实际的时间延迟是不准确的,因为不同的系统实现了不同的报警功能。实际时间可能是可达的第二或小于所请求的值。 在任何一个时间内只能设置一个闹钟定时器。如果计时器已经运行,并且您调用新的报警功能,报警定时器复位到新的值。A running timer can be reset without setting a new timer by specifying a value of 0.
一个整数,先前的定时器的剩余数目的秒数。
这里是源代码,使用alarm()函数调用。
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # propagate unexpected errors
# timed out - by www.gitbook.net
}
else {
# didn't
}