use strict;
use warnings;
print "hello\n";
sleep(10);
print "print before alarm\n";
alarm 5;
$SIG{'ALRM'} = \&alarm;
$SIG{'INT'} = \&alarm;
$SIG{'TERM'} = \&alarm;
sub alarm {
print "alarm signal hanndled\n";
}
我无法处理警报或按ctrl + c的信号。我进行了搜索,发现这是进行信号处理的一种方式。我究竟做错了什么?
最佳答案
首先,设置处理程序。然后,设置闹钟。最后,执行耗时的操作(睡眠)。您将其倒置:
#! /usr/bin/perl
use strict;
use warnings;
$SIG{'ALRM'} = \&alarm;
$SIG{'INT'} = \&alarm;
$SIG{'TERM'} = \&alarm;
print "hello\n";
alarm 5;
sleep(10);
print "after sleep\n";
sub alarm {
print "alarm signal handled\n";
}
关于perl - Perl中的信号处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27789452/