abort
Přeruší aktuální proces a vrátí kód chyby.
[!POZNÁMKA]
Nepoužívejte tuto metodu k vypnutí aplikace Windows Store, s výjimkou testování nebo ladění scénářů.Programové způsoby nebo způsoby přes uživatelské rozhraní pro zavírání aplikace Windows Store nejsou povoleny podle Podmínek certifikace aplikace pro systém Windows 8.Další informace naleznete v tématu Životní cyklus aplikace (Aplikace pro Windows Store).
void abort( void );
Vrácená hodnota
abort nevrátí ovládací prvek do volajícího procesu.Ve výchozím nastavení zkontroluje obslužné rutiny přerušení signálu a vyvolá SIGABRT, pokud je nastaveno.Pak abort ukončí aktuální proces a vrátí kód ukončení nadřazenému procesu.
Poznámky
Specifické pro Microsoft
Ve výchozím nastavení, když je aplikace sestavena s běhovou ladicí knihovnou, rutina abort zobrazí chybovou zprávu před vyvoláním SIGABRT.Pro aplikace konzoly spuštěné v režimu konzoly je zpráva je odeslána do STDERR.Aplikace pracovní plochy systému Windows a aplikace konzoly spuštěné v režimu zobrazení v okně zobrazují zprávy v okně se zprávou.Chcete-li potlačit tuto zprávu, použijte příkaz _set_abort_behavior ke zrušení příznaku _WRITE_ABORT_MSG.Zobrazená zpráva závisí na verzi používaného běhového prostředí.Zpráva pro aplikace vytvořené pomocí nejnovější verze aplikace Visual C++ vypadá takto:
R6010
- abort() has been called
V předchozích verzích běhové knihovny jazyka C byla zobrazena tato zpráva:
„This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.“
Při kompilaci programu v režimu ladění zobrazí okno se zprávou možnosti Ukončit, Opakovat nebo Ignorovat.Pokud uživatel zvolí Přerušit, program okamžitě ukončí a vrátí kód ukončení 3.Pokud uživatel zvolí Opakovat, ladicí program je vyvolán pro ladění za běhu, pokud je k dispozici.Pokud uživatel zvolí Ignorovat, abort bude pokračovat v běžném zpracování.
V maloobchodních a ladicích sestaveních poté abort zkontroluje, zda je nastavena obslužná rutina přerušení signálu.Pokud je nastavena jiná obslužná rutina signálu než výchozí, abort volá raise(SIGABRT).Pomocí funkce signál přidružte funkci pro zpracování přerušení obslužné rutiny signálu se signálem SIGABRT.Můžete provést vlastní akce – například vyčištění prostředků nebo protokolování informací – a ukončit aplikaci s vlastním kódem chyby ve funkci obslužné rutiny.Pokud není definován žádný popisovač vlastního signálu, abort nevyvolává signál SIGABRT.
Ve výchozím nastavení, sestavení bez ladění aplikací konzoly nebo stolního počítače abort a pak vyvolá mechanismus zasílání zpráv o chybách systému Windows (Dr.Watson) na podání zprávy o selhání společnosti Microsoft.Toto chování může být povolena nebo zakázáno voláním _set_abort_behavior a nastavením nebo maskováním příznaku _CALL_REPORTFAULT.Pokud je nastaven příznak, systém Windows zobrazí okno se zprávou s textem typu „Problém způsobil, že program přestal správně fungovat.“ Uživatel se může rozhodnout pro vyvolání ladicího programu pomocí tlačítka Ladění, nebo pomocí tlačítka Zavřít program ukončit aplikaci s chybovým kódem, který je definován v operačním systému.
Pokud není vyvolána obslužná rutina hlášení chyb systému Windows, tak abort volá _exit k ukončení procesu s kódem výstupu 3 a vrátí kontrolu nadřazenému procesu nebo operačnímu systému._exit nevyprázdní vyrovnávací paměti datového proudu nebo nevykoná zpracování atexit/_onexit.
Další informace o ladění CRT naleznete v tématu Techniky ladění CRT.
Specifické pro End Microsoft
Požadavky
Rutina |
Požadované záhlaví |
---|---|
abort |
<process.h> nebo <stdlib.h> |
Příklad
Následující program se pokouší otevřít soubor a přeruší se, pokud se pokus nezdaří.
// 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 );
}
}
Ekvivalent v rozhraní .NET Framework
Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.