Здесь вы видите использование прерванных системных вызовов. Но удобство потока обработки сигналов, вероятно, выше, чем использование прерванных системных вызовов.
Таким образом, вам нужно, чтобы ваш клиентский обработчик блокировался до тех пор, пока он не сможет принять входящее соединение или не возникнет сигнал. Ожидание потенциального ввода означает либо управляемый сигналом ввод-вывод - путь, по которому я бы не пошел, - либо выбор (2) (или пул). Но select (2) может ждать только на IO. Поэтому преобразуйте свое вхождение сигнала в IO: откройте канал, сделайте так, чтобы ваш поток обработки сигналов записал в канал, когда происходит SIGQUIT, и пусть ваш клиентский поток выберет (2) для сокета и другого конца канала.