Scenarios: 在程序运行过程中,受到外界终端干扰,如Ctrl+C,导致意外中断
Solution: 可通过 $SIG{INT}
接受 SIGINT 并处理中断,如回收临时文件
[root@localhost tmp]# perl /test_sigint.pl
$SIG{'INT'} = 'my_int_handler';
my $temp_directory = "/tmp/myprog.$$"; # create files below here
mkdir $temp_directory, 0700 or die "Cannot create $temp_directory: $!";
# Time passes, the program runs, creates some temporary
# files in the temp directory, maybe somone presses Control-C
sleep;
# Now it's the end of normal execution
&clean_up;
sub my_int_handler {
&clean_up;
print "after clean_up\n";
`ls -l /tmp/myprog.*`;
die "interrupted, exiting...\n";
}
sub clean_up {
unlink glob "$temp_directory/*";
rmdir $temp_directory;
}
通过Ctrl+c 触发SIGINT的结果如下:
interrupted, exiting...
其它SIG
SIGALRM