中断信号 的handle函数可能在执行的过程中被进一步的中断,如果这个handle函数执行过程比较长。并且会recursively调用之前的中断Handle函数。所以最保险的做法是在handle函数声明内部的SIG函数。 参考的demo code $int = 0; $SIG{INT} = sub { $int = 1; $SIG{INT} = 'IGNORE'; $ index=0; while(1) { print "inside INT $index ....\n"; $index++; sleep(2); if($index >500) { last; } } }; while (1) { print "Processing..\n"; sleep 1; if ($int == 1) { print "Break? "; $_ = <>; chomp; if (/y/i) { exit; } else { $int = 0; } } }
转载于:https://blog.51cto.com/whithin/685760