Я запускаю два потока python (import threading
). Оба они заблокированы по вызову open()
; на самом деле они пытаются открыть именованные каналы, чтобы писать в них, поэтому это нормальное поведение, чтобы блокировать, пока кто-то не попытается прочитать из именованного канала.Распространение системных вызовов в потоках
Короче говоря, это выглядит следующим образом:
import threading
def f():
open('pipe2', 'r')
if __name__ == '__main__':
t = threading.Thread(target=f)
t.start()
open('pipe1', 'r')
Когда я типа^C, то open()
в основном потоке прерывается (поднимает IOError
с Errno == 4).
Моя проблема: все еще ждут потоки t
, и я хотел бы распространять поведение прерывания, чтобы заставить его поднять IOError
.
Что произойдет, если вы установите daemon = True в дочернем потоке перед его запуском? –
Больше ничего. И цель моего вопроса - не убить нить, я бы хотел, чтобы он сделал кое-что (чистку) после получения сигнала. – deathiop