[Perl]$SIG{INT}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章