ABORT(3) Руководство программиста Linux 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)

2017-11-26 GNU