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.'