C/signal.h/SIGABRT

Материал из C\C++ эксперт
Перейти к: навигация, поиск

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

SIGABRT — целочисленная константа, определенная в заголовочном файле signal.h. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

В GNU/Linux, также есть сигнал SIGIOT который является синонимом SIGABRT.

SIG — общий префикс сигналов, АBRT — сокращенное написание англ. abort — преждевременное прекращение, прерывание (английский компьютерный жаргон). IOT аббревиатура англ. I/O transfer Trap — ловушка ввода-вывода (также IOT является мнемоникой инструкции PDP-8 аббревиатура I/O Transfer)

Использование

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

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