Вы можете использовать kill (getpid (), SIGSPEC), чтобы сделать это правильно, чтобы выполнить код, который фактически установлен в качестве обработчика сигнала для любого конкретного сигнала, указанного в SIGSPEC.
Конечно, вы не можете захватить SIGKILL или SIGSTOP, у которых не может быть обработчиков.Все остальные сигналы могут иметь обработчики, установленные с использованием кода сигнала.
Если код обработчика является не обработчиком сигнала, а обработчиком atexit, то он будет вызываться только через вызов exit ().Обратите внимание, что вызов _exit () обходит все обработчики atexit.
Также я вижу здесь несколько комментариев, которые, кажется, предполагают, что kill (getpid (), SIGSPEC) - это то же самое, что _exit () или exit ()НЕ!Это разные вещи.
Я бы предложил прочитать выход (3) _выход (2) сигнал (7) сигнал (2) повысить (3) sigaction (3) страницы руководства для полного понимания.