SIGABRT

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
SIGABRT
Описание Сигнал аварийного завершения используемый abort()
По умолчанию завершение с дампом памяти
Коды SA_SIGINFO
Не имеет специфических кодов

SIGABRT (от англ. signal и abort) — сигнал, используемый в POSIX-системах, посылаемый процессом самому себе при выполнении функции abort() для аварийной остановки с выполнением дампа памяти в случае невозможности дальнейшего продолжения программы.

Определён как целочисленная константа в заголовочном файле signal.h. В Linux используется сигнал-синоним — SIGIOT (от англ. I/O transfer trap — ловушка ввода-вывода).

Функция abort(), посылающая этот сигнал самому процессу, определена в libc с прототипом в stdlib.h. Сигнал может быть перехвачен или проигнорирован, но abort() принудительно завершит программу (предварительно сбросив и закрыв стандартные потоки и сделав дамп памяти программы), даже если этого не сделает обработчик сигнала. Таким образом функция abort() гарантирует завершение программы, почему она часто используется библиотеками в аварийных ситуациях — когда выполнение не должно быть продолжено, но основная программа должна иметь возможность выполнить действия, необходимые перед аварийным завершением.

Также SIGABRT вызывается утверждениями (средство отладки Си — макроопределение assert() вызывает abort(), если утверждение переданное в качестве аргумента ложно).