_set_abort_behavior
Určuje akci, která se má provést při neobvyklém ukončení programu.
Poznámka:
Funkci nepoužívejte abort
k vypnutí aplikace z Microsoft Storu, 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
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
Parametry
flags
Nová hodnota abort
příznaků
mask
Maska abort
pro bity příznaků, které se mají nastavit.
Vrácená hodnota
Stará hodnota příznaků.
Poznámky
Existují dva abort
příznaky: _WRITE_ABORT_MSG
a _CALL_REPORTFAULT
. _WRITE_ABORT_MSG
určuje, zda je při neobvyklém ukončení programu vytištěna užitečná textová zpráva. Zpráva uvádí, že aplikace volala abort
funkci. Výchozí chování je vytisknout zprávu. _CALL_REPORTFAULT
, pokud je nastavena, vyvolá mechanismus služby Zasílání zpráv o chybách systému Windows Service (dříve označovaný jako Dr. Watson) k hlášení selhání společnosti Microsoft při abort
volání. Ve výchozím nastavení je protokolování výpisu stavu systému povolené v sestaveních, které nejsou v ladění. 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.
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 |
---|---|
_set_abort_behavior |
<stdlib.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_set_abort_behavior.c
// compile with: /TC
#include <stdlib.h>
int main()
{
printf("Suppressing the abort message. If successful, this message"
" will be the only output.\n");
// Suppress the abort message
_set_abort_behavior( 0, _WRITE_ABORT_MSG);
abort();
}
Suppressing the abort message. If successful, this message will be the only output.