abort(3)

NAZWA
abort - awaryjnie kończy proces

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <stdlib.h>

[[noreturn]] void abort(void);

OPIS
Funkcja abort() najpierw odblokowuje sygnał SIGABRT, a następnie wysyła ten sygnał do procesu wywołującego (jakby wywołano raise(3). Skutkuje to nienormalnym zakończeniem procesu, chyba że sygnał SIGABRT został przechwycony i funkcja obsługi tego sygnału nie powraca (patrz longjmp(3)).

Jeśli sygnał SIGABRT jest ignorowany lub przechwytywany przez funkcje obsługi, która powraca, to funkcja abort() zakończy proces. Aby to zrobić, przywróci domyślną procedurę obsługi SIGABRT i ponownie wyśle ten sygnał.

Jak w przypadku innych sytuacji niepoprawnego przerwania, funkcje zarejestrowane za pomocą atexit(3) i on_exit(3) nie są wywoływane.

WARTOŚĆ ZWRACANA
Funkcja abort() jest funkcją bez powrotu.

ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
Interfejs | Atrybut | Wartość
abort() | Bezpieczeństwo wątkowe | MT-bezpieczne

STANDARDY
C11, POSIX.1-2008.

HISTORIA
SVr4, POSIX.1-2001, 4.3BSD, C89.

Do glibc 2.26, jeśli funkcja abort() spowodowała przerwanie procesu, wszystkie otwarte strumienie były zamykane i opróżniane (jak przy fclose(3)). Jednak w niektórych sytuacjach mogło to prowadzić do wzajemnej blokady i utraty danych. Z tego powodu, od glibc 2.27, abort() przerywa procesy bez wypróżniania strumieni. POSIX.1 zezwala na oba te zachowania określając, że abort() „może próbować zachować się jak fclose() na wszystkich otwartych strumieniach”.

ZOBACZ TAKŻE
gdb(1), sigaction(2), assert(3), exit(3), longjmp(3), raise(3)

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Adam Byrtek <alpha@irc.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.