ABORT(3)

ИМЯ
abort - аварийно завершает процесс

ОБЗОР
#include <stdlib.h>

void abort(void);

ОПИСАНИЕ
Сначала функция abort() разблокирует сигнал SIGABRT, а затем генерирует этот сигнал для вызывающего процесса (как если бы была вызвана raise(3)). Это приводит к аварийному завершению процесса, если сигнал SIGABRT не обрабатывается и обработчик сигнала не возвращает управление (смотрите longjmp(3)).

Если сигнал SIGABRT игнорируется или обрабатывается обработчиком, который возвращает управление, то функция abort() всё равно завершит процесс. Она восстанавливает обработчик SIGABRT по умолчанию, а затем генерирует сигнал повторно.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция abort() никогда не возвращает управление.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
abort() | Безвредность в нитях | MT-Safe

ЗАМЕЧАНИЯ
Вплоть до glibc 2.26, если функция abort() вызывала завершение процесса, то все открытые потоки закрывались и сбрасывались на диск (как при fclose(3)). Однако, в некоторых случаях это могло приводить к взаимным блокировкам и повреждению данных. Поэтому, начиная с glibc 2.27, abort() завершает процесс не сбрасывая потоки на диск. В POSIX.1 разрешено и такое поведение, там указано, что abort() «может выполнить попытку отработать как fclose() на все открытые потоки».

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, POSIX.1-2001, POSIX.1-2008, 4.3BSD, C89, C99.

СМОТРИТЕ ТАКЖЕ
gdb(1), sigaction(2), assert(3), exit(3), longjmp(3), raise(3)