我正在尝试从我正在处理的脚本中获取一些调试输出。由于某种原因,下面的代码不会输出任何内容:
$SIG{'HUP'} = \&dump_state;
sub dump_state {
print "dumping state: \n\n";
debug(Dumper($state));
}
我也尝试过使用INT和TERM信号,但是没有输出。什么可能导致这种情况发生?我不知所措。
我也忘了提到“debug()”是应用程序中的一个小子,它只是用一些颜色编码打印到STDERR。众所周知,它可以在脚本中的其他任何位置工作。
答案 0 :(得分:0)
我认为您只是尝试使用错误的信号名称。
http://docstore.mik.ua/orelly/perl/cookbook/ch16_19.htm
捕获CTRL-C是信号INT而不是HUP。
此代码有效:
use strict;
use warnings;
local $SIG{'INT'} = \&dump_state;
my $i=0;
while(1){
$i++;
sleep(5);
}
sub dump_state {
print "dumping state: $i\n\n";
}
./hup_test.pl
dumping state: 1
dumping state: 2
dumping state: 3
dumping state: 4
dumping state: 5
Killed