Написал простой сервер на C. Принцип работы - главный поток ждёт (функция accept()) пока к нему присоединится клиент, как только это происходит - создаёт поток который работает с клиентом, и опять ждёт нового клиента и т.д.
Требуется, чтобы при получении сигнала (например SIGINT), главный поток переставал ждать присоединения.
Кто представляет - как такое можно сделать?
Единственное, что я смог придумать, это
1. Заставить обработчик сигнала изменять переменную-флаг.
2. Сделать слушающий сокет не блокируемым, с помощью select() ждать несколько секунд присоединения, затем проверять значение флага и опять ждать и т.д.
Но это, как говорится, не труЪ. Хотелось бы, чтобы можно было "влиять" на select() также как это делают файловые дискрипторы :). Но возможно ли такое?