Чистый захват сигналов в Perl

У меня есть простой Perl-скрипт, который просто выводит строку текста на стандартный вывод. Чего я хочу добиться, так это того, чтобы во время работы этого сценария, если я (или кто-то другой )давал этому процессу сигнал остановиться, я хочу, чтобы он перехватывал этот сигнал и завершался корректно. Код у меня выглядит следующим образом

#!/usr/bin/perl -w

$| = 1;
use sigtrap 'handler' => \&sigtrap, 'HUP', 'INT','ABRT','QUIT','TERM';
while(1){
 print "Working...\n";
 sleep(2);
}
sub sigtrap(){
 print "Caught a signal\n";
 exit(1);
}

Хотя это хорошо работает, когда я действительно нажимаю ctrl -c из командной строки, если я выдаю

kill -9 <pid>

Он просто умирает. Как мне заставить его выполнить что-то перед выходом? Моя общая идея состоит в том, чтобы использовать эту структуру, чтобы зафиксировать, когда этот сценарий умирает на сервере из-за перезагрузки сервера для обслуживания или сбоя.

Заранее спасибо

5
задан dolmen 30 August 2012 в 08:35
поделиться