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/

10-15 12:40