История изменений
Исправление kawaii_neko, (текущая версия) :
Читать man 7 signal до просветления. Особо обращаю внимание на то, что
-  По умолчанию сигналы вызывают перезапуск системных вызовов (или это только в glibc так?), так что твой кейс с EINTR никогда не сработает. Кстати, ты удивишься, сколько всего может сломаться, если вдруг начнет получать EINTR. Больше узнать об этом можно по ключевом слову 
SA_RESTARTвman 2 sigaction -  Вешаться на 
SIGINT, а потом рассылать его же кажется не самой хорошей идеей, хотя бы потому чтоpthread_kill(SIGINT)в теории должен позвать обработчик этого сигнала в «убиваемом» треде и, кажется, тогда наступит неловкая рекурсивная ситуация 
Исходная версия kawaii_neko, :
Читать man 7 signal до просветления. Особо обращаю внимание на то, что
-  По умолчанию сигналы вызывают перезапуск системные вызовов (или это только в glibc так?), 
SA_RESTARTскажет об этом больше -  Вешаться на 
SIGINT, а потом рассылать его же кажется не самой хорошей идеей, хотя бы потому чтоpthread_kill(SIGINT)в теории должен позвать обработчик этого сигнала в «убиваемом» треде и, кажется, тогда наступит неловкая рекурсивная ситуация