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
}