python多线程中 接收到Ctrl+C后 怎么结束正处于阻塞状态的子线程

在python多线程中,只有主线程能接收到信号,而且不能使用join阻塞,那么主线程接收到信号后怎么结束正在阻塞状态中的子线程呢
如下代码子线程receive_task1正阻塞在os.read()(接收串口数据,串口没有收到数据)函数中,有没有什么办法让os.read()函数退出呢?
如果在主线程中使用os.read(),默认情况可以使用Ctrl+C打断,现在这种情况如何做最佳?
importos
importsignal
importthreading
importtime
deftest(signum,frame):
print("\nreceivedsig%d"%(signum))
print("howtomakeos.read(...)inrcv_task1threadstop?")
print("exceptusesys.exit(1)")
defreceive_task1():
fd=os.open("/dev/ttyUSB1",os.O_RDWR)
os.read(fd,10)
print("receivethreadend")
signal.signal(signal.SIGINT,test)
rcv_task1=threading.Thread(target=receive_task1)
rcv_task1.setDaemon(True)
rcv_task1.start()
while(1):
time.sleep(1)
米脂
浏览 1205回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript