alarm

alarm EXPR
alarmThis function tells the operating system to send a SIGALRM signal to the current process after
EXPR wallclock seconds have elapsed.
Only one timer may be active at once. Each call disables the
previous timer, and an EXPR of 0 cancels the
previous timer without starting a new one. The return value is the
amount of time remaining on the previous timer.
print "Answer me within one minute, or die: "; alarm(60); # kill program in one minute $answer = <STDIN>; $timeleft = alarm(0); # clear alarm say "You had $timeleft seconds remaining";
It is usually a mistake to intermix alarm and sleep calls, because many systems use the
alarm(2) syscall mechanism to implement
sleep(3). Historically, the elapsed time may be up
to one second less than you specified because of how seconds are
counted. Additionally, a busy system may not get around to running your
process immediately. See Chapter 15 for information on
signal handling, such as how to use alarms to time out slow
operations.
For alarms of finer granularity than one second, the Time::HiRes module provides functions for this purpose. For a hackier
approach, use the four-argument version of select (leaving the first three arguments
undefined), or Perl’s syscall
function to access setitimer(2) (if your system
supports it).
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access