2016-05-29 20 views
-2

を使用しているとき、私はエラーを取得私は属性エラーsignal.pthread_sigmask

にエラーをsignal.pthread_sigmaskを使用しようとするたびにあるキープ: はAttributeError:「int型のオブジェクトには、属性「とpthread_sigmask」

def clean_up(): 
     socket.close() 
     context.term() 

def receive_signal(signal, stack): 
     signal.pthread_sigmask(signal.SIG_BLOCK, signal.SIGINT) 
     print ("Exiting because I received a signal:", signum) 
     clean_up() 
     sys.exit(1) 

#Create zmq context and bind socket 
context = zmq.Context() 
socket = context.socket(zmq.REP) 
socket.bind("tcp://*:5555") 

#Register signal handler with signals 
signal.signal(signal.SIGINT, receive_signal) 
signal.signal(signal.SIGTERM, receive_signal) 
signal.signal(signal.SIGHUP, receive_signal) 
を持っていません
+0

エラーは何ですか。 –

+0

一部のインポート行をスキップしましたか? ;-) 'receive_signal'で受け取った' signal'引数が整数の場合、 'signal.pthread_sigmask'というモジュール関数を呼び出す運がありません。右?通常、ハンドラには、それをよりよく記憶するために 'signum'などの引数があります。詳細と有効なコード(分離の観点から)が必要です。 – Dilettant

答えて

2

receive_signalファンクションの名前をsignalとすると、モジュールsignalがシャドーされているだけで、何か別のものを呼び出すと、代わりにsignumという名前を使用しているようです。

def receive_signal(signum, stack): 
    ... 
+0

はい、私は自分でそれを実現しました。それがどう起こったのか分かりません。とにかくThx。 – dpetican