テキスト行を標準出力に単純に出力する単純な 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>
それはただ死ぬ。終了する前に何かを実行するにはどうすればよいですか? 私の一般的な考えは、このフレームワークを使用して、メンテナンスまたは障害のためのサーバーの再起動により、このスクリプトがサーバー上で停止したときをキャプチャすることです。
よろしくお願いします