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 的信号。我搜索并发现这是一种进行信号处理的方法。我做错了什么?
最佳答案
首先,设置处理程序。然后,设置闹钟。最后,做耗时的操作( sleep )。你把它倒过来了:
#! /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/