2017-02-15 4 views
0

私はPythonプログラムを "syslog-ng -Fevd" OSEバージョン3.8で実行しているので、コマンドラインからすぐに開発することができます。私のシグナルハンドラは、コマンドラインから実行するとcontrol-C(と私は他のシグナルを仮定します)をキャッチしますが、syslog-ngの内部ではキャッチしません。シグナルはsyslog-ngのPythonに伝播することが知られていますか?私はPythonを初めて使っていますが、私は間違いを犯しましたか?「syslog-ng -Fevd」の中で実行されている私の組み込みPythonはシグナルを受け取っていないようですが、それは本当ですか?

コマンドライン(コントロール-C)から
#Start of syslog-ng python config 
python { 

def handler(signum, frame): 
    print 'Signal handler called with signal', signum 
    stopSubscription() 

signal.signal(signal.SIGALRM, handler) 
signal.signal(signal.SIGINT, handler) 
signal.signal(signal.SIGABRT, handler) 
signal.signal(signal.SIGHUP, handler) 
signal.signal(signal.SIGTERM, handler) 
signal.signal(signal.SIGBUS, handler) 
signal.signal(signal.SIGCHLD, handler) 
signal.signal(signal.SIGCLD, handler) 

def stopSubscription(): 
    print "shutdown requested" 
}; # end of syslog-ng block 

ともPyCharm(停止ボタン)の中から、私は信号2 シャットダウンと呼ば

シグナルハンドラが、

を要求したが、syslogの-ngのから入手クリケット。

答えて

0

あなたはPythonコードで間違いを犯しました。関数を登録するには、シグナルモジュールをインポートする必要があります。

ただし、コードを修正しても問題は解決しません。 Pythonでハンドラを登録すると、シグナルはPythonやsyslog-ngのシグナルハンドラには転送されません。

関連する問題