我正在尝试一遍又一遍地报警。
我的处理程序是
def handler_SIGALRM(signum, frame):
print "waiting"
signal.alarm(2)
警报仅工作一次,即使每次我再次设置它。 在我的代码中,我也在孩子工作之后使用sigchld和sys.exit。
我正在用cygwin运行它。
编辑: 我需要编写一个代码,每秒打印“等待”,使用sigalarm而不是循环
我是个白痴,我编辑了错误的代码
答案 0 :(得分:0)
您将signal.alarm(2)
放在错误的地方。请参阅下面的示例。
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)