2016-10-09 8 views
0

私は何度も何度も警報を出そうとしています。Linuxでsigalarmを何度も繰り返して設定するには?

私のハンドラも、私は再びそれを設定するたびにかかわらず、一度だけ

def handler_SIGALRM(signum, frame): 
    print "waiting" 
    signal.alarm(2) 

警報作品です。 私のコードでは、子プロセスの後にsigc​​hldとsys.exitも使用します。

私はcygwinで実行しています。

編集:私はSIGALARMではなく、私は馬鹿だ

をループして、毎秒「待機中」に印刷するコードを記述する必要が 、私はあなたがあなたのsignal.alarm(2)を入れて、間違ったコードに

答えて

0

を編集しました間違った場所で下の私の例を見てください。

import time 
import signal 

class TimeoutException (Exception): 
    pass 

def signalHandler (signum, frame): 
    raise TimeoutException() 

timeout_duration = 5 

signal.signal (signal.SIGALRM, signalHandler) 




for i in range (5): 
    signal.alarm (timeout_duration) 
    try: 
     """Do something that has a possibility of taking a lot of time 
     and exceed the timeout_duration""" 
     time.sleep (20) 
    except TimeoutException as exc: 
     print "Notify your program that the timeout_duration has passed" 
    finally: 
     #Clean out the alarm 
     signal.alarm (0) 
+0

毎秒 "待機中"を書き込むには、sigalarm(ループではない)を使用する必要があります。私はメインで初めて設定しました。 –

+0

こんにちは。私はアホです。別のコードを編集したためにコードが機能しませんでした –

関連する問題