我有一个从主线程生成的线程,该线程基本上具有一个无限循环,具有系统阻塞功能:
def run(self):
global EXIT
while not EXIT:
data = self.conn.recv(1024)
...
我已经为SIGINT
定义了信号处理程序
def sig_handler(signum, frame):
global EXIT, threads
if (signum == 2):#defensive
print("Called SIGINT")
EXIT = True
由于信号被主线程捕获,因此中断了主线程。但是另一个线程卡在了阻塞函数上:有没有办法在python中中断系统调用阻塞函数,以便退出该函数?
我不想直接停止SIGINT
正常运行的过程,但是我只是想中断recv
,以使while的条件不再成立,因此我可以在退出之前做其他事情