В Linux имеется ряд средств для работы с сигналами:
waitpid(2)
может использоваться для ожидания в линии для SIGCHLD
sigaction(2)
может использоваться для настройки функций обработчика для реагирования на конкретные сигналы, здесь флаг SA_RESTART
влияет на то, являются ли определенные системные вызовы прерванными или перезапущен
sigprocmask(2)
может использоваться для блокировки нескольких сигналов
sigwait(3)
может использоваться для ожидания количества сигналов в линии
- Последние версии ядра поддерживают
signalfd(2)
, что удобно, когда нужно объединить обработку сигналов и неблокирующий ввод-вывод.
Затем наступает следующий уровень сложности, когда мы начинаем говорить о потоках, хотя, если вы имеете дело с сигналами явно, вам, как правило, все равно , какой сигнал прервал системный вызов.