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