Функция signal
устанавливает обработчик сигнала.Что это значит: « Когда мой процесс получает этот сигнал, запустите эту функцию вместо того, чтобы делать то, что было по умолчанию ».
Итак, в вашем примере вызовы signal
не вызывайте функцию .Чтобы реально увидеть сигналы в действии, сделайте следующее:
- Запустите процесс на одном терминале
С другого терминала:
kill -INT `pidof proc`
Как примечание, printf
и друзья не защищены от асинхронного сигнала.Это может шокировать, но небезопасно использовать их в обработчиках сигналов .
В качестве примечания, даже если вы отметили свой вопрос Unix
, важнознать, что сигналы (и функция signal
) являются стандартными, неотъемлемыми частями C. Обработка сигналов и функция signal
описаны в C99 в §7.14.1.