abort
Přeruší aktuální proces a vrátí kód chyby.
Poznámka:
Tuto metodu nepoužívejte k vypnutí aplikace z Microsoft Storu nebo aplikace Univerzální platforma Windows (UPW), s výjimkou scénářů testování nebo ladění. Programové způsoby zavření aplikace pro Store prostřednictvím kódu programu nebo uživatelského rozhraní nejsou povoleny podle zásad Microsoft Storu. Další informace najdete v tématu Životní cyklus aplikace pro UPW.
Syntaxe
void abort( void );
Vrácená hodnota
abort
nevrátí řízení do volajícího procesu. Ve výchozím nastavení kontroluje obslužnou rutinu přerušeného signálu a vyvolá SIGABRT
, pokud je nastavená. Potom abort
ukončí aktuální proces a vrátí ukončovací kód nadřazeného procesu.
Poznámky
Specifické pro Microsoft
Ve výchozím nastavení se při vytváření aplikace s knihovnou abort
modulu runtime ladění zobrazí rutina před vyvoláním chybové zprávy SIGABRT
. U konzolových aplikací spuštěných v režimu konzoly se zpráva odešle do STDERR
. Desktopové aplikace pro Windows a konzolové aplikace spuštěné v režimu okna zobrazují zprávu v poli se zprávou. Pokud chcete zprávu potlačit, použijte _set_abort_behavior
k vymazání příznaku _WRITE_ABORT_MSG
. Zobrazená zpráva závisí na verzi použitého prostředí modulu runtime. U aplikací vytvořených pomocí nejnovějších verzí visual C++ se zpráva podobá této:
R6010 – abort() byl volána
V předchozích verzích knihovny modulu runtime jazyka C se zobrazila tato zpráva:
Tato aplikace požádala modul runtime, aby ho ukončil neobvyklým způsobem. Další informace vám poskytne tým podpory aplikace.
Když je program zkompilován v režimu ladění, zobrazí se v poli zprávy možnosti přerušení, opakování nebo ignorování. Pokud uživatel zvolí přerušení, program se okamžitě ukončí a vrátí ukončovací kód 3. Pokud uživatel zvolí možnost Opakovat, vyvolá se ladicí program pro ladění za běhu, pokud je k dispozici. Pokud uživatel zvolí Ignorovat, abort
bude pokračovat v normálním zpracování.
V prodejních i ladicích buildech pak zkontrolujte, abort
jestli je nastavená obslužná rutina přerušeného signálu. Pokud je nastavena jiná než výchozí obslužná rutina signálu, abort
volá raise(SIGABRT)
. signal
Pomocí funkce přidružte funkci obslužné rutiny signálu k signáluSIGABRT
. Můžete provádět vlastní akce – například vyčistit prostředky nebo informace protokolu – a ukončit aplikaci vlastním kódem chyby ve funkci obslužné rutiny. Pokud není definována žádná obslužná rutina vlastního signáluSIGABRT
, abort
nezvýší signál.
Ve výchozím nastavení v neladicích buildech desktopových nebo konzolových aplikací abort
vyvolá mechanismus služby Zasílání zpráv o chybách systému Windows Service (dříve označovaný jako Dr. Watson), který hlásí chyby Společnosti Microsoft. Toto chování lze povolit nebo zakázat voláním _set_abort_behavior
a nastavením nebo maskováním příznaku _CALL_REPORTFAULT
. Když je příznak nastavený, zobrazí systém Windows pole se zprávou s textem typu "Problém způsobil, že program přestal správně fungovat". Uživatel se může rozhodnout vyvolat ladicí program pomocí tlačítka Ladit , nebo zvolit tlačítko Zavřít program a ukončit aplikaci kódem chyby, který je definovaný operačním systémem.
Pokud není vyvolána obslužná rutina zasílání zpráv o chybách systému Windows, abort
volání _exit
pro ukončení procesu ukončovacím kódem 3 a vrátí řízení nadřazeného procesu nebo operačního systému. _exit
neprázdní vyrovnávací paměti datových proudů ani zpracování atexit
/_onexit
.
Z důvodů kompatibility Systému Windows může volání abort
_exit
vyvolat rozhraní API systému Windows ExitProcess
, které zase umožňuje spouštění rutin ukončení knihovny DLL. Destruktory se nespouštějí ve spustitelném souboru, ale totéž nemusí být pravdivé pro knihovny DLL načtené v prostoru procesu spustitelného souboru. Toto chování není striktně v souladu se standardem C++. Pokud chcete okamžitě ukončit proces včetně knihoven DLL, použijte rozhraní API systému Windows TerminateProcess
. Můžete také zaregistrovat obslužnou rutinu přerušeného signálu, která vyvolá TerminateProcess
chování vyhovující standardu. Kompatibilní chování může být v kompatibilitě s Windows za určitou cenu.
Další informace o ladění CRT naleznete v tématu Techniky ladění CRT.
Ukončit konkrétní microsoft
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Pokud ho chcete změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
abort |
<process.h> nebo <stdlib.h> |
Příklad
Následující program se pokusí otevřít soubor a přeruší, pokud pokus selže.
// crt_abort.c
// compile with: /TC
// This program demonstrates the use of
// the abort function by attempting to open a file
// and aborts if the attempt fails.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE *stream = NULL;
errno_t err = 0;
err = fopen_s(&stream, "NOSUCHF.ILE", "r" );
if ((err != 0) || (stream == NULL))
{
perror( "File could not be opened" );
abort();
}
else
{
fclose( stream );
}
}
File could not be opened: No such file or directory
Viz také
Používající abort
Funkce abort
Řízení procesů a prostředí
_exec
, _wexec
funkce
exit
, , _Exit
_exit
raise
signal
_spawn
, _wspawn
funkce
_DEBUG
_set_abort_behavior