【发布时间】:2024-01-08 09:31:01
【问题描述】:
以下代码将每 5 秒打印一次当前时间,并使用int_handler 处理键盘中断信号。
from signal import *
import time
from datetime import datetime
def int_handler(*args):
print 'interrupted'
signal(SIGINT, int_handler)
while True:
print datetime.now()
time.sleep(5)
但是,每次我按 Ctrl-C 时,它都会立即打印出当前时间,并继续运行。
2016-06-28 18:17:19.441574
2016-06-28 18:17:24.446659
2016-06-28 18:17:29.451759
2016-06-28 18:17:34.452328
^Cinterrupted
2016-06-28 18:17:37.244227
^Cinterrupted
2016-06-28 18:17:37.692217
^Cinterrupted
2016-06-28 18:17:38.236343
^Cinterrupted
2016-06-28 18:17:38.572194
2016-06-28 18:17:43.577122
2016-06-28 18:17:48.577242
似乎中断将进程从睡眠中唤醒,处理程序被执行,不知何故又回到了while循环。
谁能给我解释一下为什么?谢谢!
【问题讨论】:
标签: python multithreading operating-system signals interrupt