Я пытаюсь написать клиентскую программу unix, которая слушает сокет, stdin и чтение из файловых дескрипторов. Я назначаю каждую из этих задач отдельному потоку и успешно связываю их с "основным" приложением, используя синхронизированные очереди и семафор. Проблема в том, что когда я хочу завершить эти дочерние потоки, все они блокируют ввод. Кроме того, потоки не могут регистрировать обработчики сигналов в потоках, потому что в Python разрешен только основной поток выполнения.
Любые предложения?