Описание тега signals

Сигнал - это уведомление процессу о том, что произошло событие. Сигналы иногда называют программными прерываниями. Сигналы аналогичны аппаратным прерываниям в том смысле, что они прерывают нормальный поток выполнения программы; в большинстве случаев невозможно точно предсказать, когда придет сигнал. Они определены в стандартах C и расширены в POSIX, но многие другие языки / системы программирования также предоставляют к ним доступ.

Стандарты

Эти стандарты фактически предъявляют требования к средствам обработки сигналов:

C++ 11 по существу говорит, что вы получаете те же возможности, что и в C, если вы ограничиваете обработчики сигналов общим подмножеством C и C++ и используете для них связь C. Цитата из n3242 раздела 18.10 "Другая поддержка времени выполнения" [support.runtime] (параграф 8),

Общее подмножество языков C и C++ состоит из всех объявлений, определений и выражений, которые могут появляться в правильно сформированной программе C++, а также в соответствующей программе на C. POF ("обычная старая функция") - это функция, которая использует только функции из этого общего подмножества и не использует прямо или косвенно никакую функцию, не являющуюся POF, за исключением того, что она может использовать функции, определенные в разделе 29, которые не являются функции-члены. Все обработчики сигналов должны иметь связь C. POF, который можно использовать в качестве обработчика сигналов в соответствующей программе на C, не вызывает неопределенного поведения при использовании в качестве обработчика сигналов в программе на C++. Поведение любой другой функции, используемой в качестве обработчика сигнала в программе на C++, определяется реализацией.