Sdílet prostřednictvím


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_exitvyvolat 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é

Pomocí abort
Funkce abort
Řízení procesů a prostředí
_exec, _wexec funkce
exit, _Exit, _exit
raise
signal
_spawn, _wspawn funkce
_DEBUG
_set_abort_behavior