2012-03-20 15 views
0

私が取り組んでいるスクリプトからデバッグ出力を取得しようとしています。以下のコードは出力しません何らかの理由で何のために:シグナルイベントハンドラでデータを出力しようとしていません

$SIG{'HUP'} = \&dump_state; 

sub dump_state {   
    print "dumping state: \n\n"; 
    debug(Dumper($state)); 
} 

私もINTとTERMシグナルでこれを試してみましたが、私は何も出力を取得していません。何が起こるのか?私は迷っている。

「debug()」は、STDERRに色分けして印刷する小さなサブアプリケーションです。スクリプトのどこかで動作することが知られています。

+0

が問題にされていることを排除するために ''印刷STDERR'とDEBUG'を交換してください。あなたは何の出力も得られず、「ダンピング状態」さえありません。 '$ state'は空ですが、それでも何かをダンプする必要があります。 – Schwern

+0

愚かな質問:プログラムにSIGHUPを送っていますか? – mob

+0

あなたが提供したプログラムは、あなたがそれに属している問題を抱えていません。 – ikegami

答えて

0

あなたは単に間違った信号名を使用しようとしたと思います。 CTRL-Cをキャッチ

http://docstore.mik.ua/orelly/perl/cookbook/ch16_19.htm

はHUP信号INTはありません。

このコードは動作します:

use strict; 
use warnings; 

local $SIG{'INT'} = \&dump_state; 

my $i=0; 
while(1){ 
    $i++; 
    sleep(5); 
} 

sub dump_state {   
    print "dumping state: $i\n\n"; 

} 
./hup_test.pl 
dumping state: 1 

dumping state: 2 

dumping state: 3 

dumping state: 4 

dumping state: 5 

Killed 
関連する問題