【发布时间】:2026-01-09 09:20:03
【问题描述】:
我有一个程序可以通过 select 阻止读取,但我希望它通过发送 SIGINT 信号优雅地返回。并使用处理程序处理该信号。不幸的是,块程序不会从 select 系统调用返回,而是接收 SIGINT 并中断。 任何人都可以帮助我找出问题所在吗?非常感谢。
import select
import socket
import signal
class Test(object):
def __init__(self):
self._read, self._write = socket.socketpair()
def wait(self):
readable = [self._read.fileno()]
return select.select(readable, [], readable)
def wakeup(self):
self._write.send('1')
t = Test()
def handler(signum, frame):
t.wakeup()
signal.signal(signal.SIGINT, handler)
if __name__ == '__main__':
print t.wait()
print 'over.'
【问题讨论】:
-
感谢您的帮助,但该引用并不能帮助我解决问题。我只是好奇为什么 select 没有得到操作系统通知 readalbe fds,而是得到中断信号 instand:(
标签: python linux signals system-calls