在qx或system时捕获SIGINT

时间:2015-04-10 07:59:39

标签: perl

考虑这个例子:

#!/usr/bin/env perl
use Argv;    
use sigtrap 'handler' => \&stop, 'INT';

for (0 .. 10) {
    Argv->new('sleep', '0.5')->system;
}

sub stop { 
    print "\nStopping this damned program!\n" and exit -1;
}

我想在我的程序中随时捕捉 Ctrl + c 。即使我试图捕获SIGINT,这也不起作用。

怎么了?

1 个答案:

答案 0 :(得分:1)

我发现了一个类似的问题here,解决方案可以这样编写:

#!/usr/bin/env perl
use Argv;
use POSIX qw(SIGINT);

$SIG{INT} = \&stop;

for (0 .. 10) {
    Argv->new('sleep', '0.5')->qx;
}

sub stop { 
    print "\nStopping this damned program!\n" and exit -1;
}