Osc*_*car 2 python signals python-2.7
我有一个自己似乎无法解决的问题。我正在写一个小的python脚本,我想知道为什么signal.alarm
返回它的函数后我仍然可以工作。这是代码:
class AlarmException(Exception):
pass
def alarmHandler(signum, frame):
raise AlarmException
def startGame():
import signal
signal.signal(signal.SIGALRM, alarmHandler)
signal.alarm(5)
try:
# some code...
return 1
except AlarmException:
# some code...
return -1
def main():
printHeader()
keepPlaying = True
while keepPlaying:
score = 0
for level in range(1):
score += startGame()
answer = raw_input('Would you like to keep playing ? (Y/N)\n')
keepPlaying = answer in ('Y', 'y')
Run Code Online (Sandbox Code Playgroud)
因此问题在于,当我的startGame()
函数返回时,SIGALRM仍在递减并关闭程序。这是回溯:
Would you like to keep playing ? (Y/N)
Traceback (most recent call last):
File "game.py", line 84, in <module>
main()
File "game.py", line 80, in main
answer = raw_input('Would you like to keep playing ? (Y/N)\n')
File "game.py", line 7, in alarmHandler
raise AlarmException
__main__.AlarmException
Run Code Online (Sandbox Code Playgroud)
当退出其功能时,如何对SIGALRM说停止?
谢谢 !
signal.alarm(0)
当您想禁用闹钟时,尝试拨打电话。
它很可能只是alarm()
在libc中调用,并man alarm
说alarm(0)
“ ...使当前警报无效,并且不会传递SIGALRM信号。”
归档时间: |
|
查看次数: |
1206 次 |
最近记录: |