Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Hiermee wordt het huidige proces afgebroken en wordt een foutcode geretourneerd.
Opmerking
Gebruik deze methode niet om een Microsoft Store-app of UWP-app (Universal Windows Platform) af te sluiten, behalve in test- of foutopsporingsscenario's. Programmatische of ui-manieren om een Store-app te sluiten, zijn niet toegestaan volgens het Microsoft Store-beleid. Zie de levenscyclus van UWP-apps voor meer informatie.
Syntaxis
void abort( void );
Retourwaarde
abort retourneert geen controle over het aanroepende proces. Standaard wordt gecontroleerd op een afgebroken signaalhandler en wordt er een weergegeven SIGABRT als deze is ingesteld. Beëindigt abort vervolgens het huidige proces en retourneert een afsluitcode naar het bovenliggende proces.
Opmerkingen
Microsoft-specifieke
Wanneer een app is gebouwd met de runtimebibliotheek voor foutopsporing, abort wordt standaard een foutbericht weergegeven voordat SIGABRT deze wordt gegenereerd. Voor console-apps die worden uitgevoerd in de consolemodus, wordt het bericht verzonden naar STDERR. Windows-bureaublad-apps en console-apps die worden uitgevoerd in de modus Vensters, geven het bericht weer in een berichtvak. Als u het bericht wilt onderdrukken, gebruikt _set_abort_behavior u om de _WRITE_ABORT_MSG vlag te wissen. Het weergegeven bericht is afhankelijk van de versie van de gebruikte runtime-omgeving. Voor toepassingen die zijn gebouwd met behulp van de meest recente versies van Visual C++, lijkt het bericht op deze:
R6010 - abort() is aangeroepen
In eerdere versies van de C Runtime-bibliotheek is dit bericht weergegeven:
Deze toepassing heeft de Runtime gevraagd deze op een ongebruikelijke manier te beëindigen. Neem contact op met het ondersteuningsteam van de toepassing voor meer informatie.
Wanneer het programma is gecompileerd in de foutopsporingsmodus, worden in het berichtvak opties weergegeven voor afbreken, opnieuw proberen of negeren. Als de gebruiker Abort kiest, wordt het programma onmiddellijk beëindigd en wordt een afsluitcode van 3 geretourneerd. Als de gebruiker Opnieuw proberen kiest, wordt een foutopsporingsprogramma aangeroepen voor Just-In-Time-foutopsporing, indien beschikbaar. Als de gebruiker Negeren kiest, abort wordt de normale verwerking voortgezet.
Controleert in zowel retail- als foutopsporingsversies abort of een afgebroken signaalhandler is ingesteld. Als een niet-standaard signaalhandler is ingesteld, abort roept u aan raise(SIGABRT). Gebruik de signal functie om een afgebroken signaalhandlerfunctie te koppelen aan het SIGABRT signaal. U kunt aangepaste acties uitvoeren( bijvoorbeeld resources of logboekgegevens opschonen) en de app beëindigen met uw eigen foutcode in de handler-functie. Als er geen aangepaste signaalhandler is gedefinieerd, abort wordt het SIGABRT signaal niet hoger.
Standaard roept u in niet-foutopsporingsversies van bureaublad- of console-apps abort het Windows Error Reporting Service-mechanisme (voorheen dr. Watson genoemd) aan om fouten aan Microsoft te rapporteren. Dit gedrag kan worden ingeschakeld of uitgeschakeld door de vlag aan te roepen _set_abort_behavior en in te stellen of te _CALL_REPORTFAULT maskeren. Wanneer de vlag is ingesteld, wordt in Windows een berichtvak weergegeven met tekst zoals 'Een probleem heeft ertoe geleid dat het programma niet meer goed werkt'. De gebruiker kan ervoor kiezen om een foutopsporingsprogramma aan te roepen met een foutopsporingsknop of kies de knop Programma sluiten om de app te beëindigen met een foutcode die is gedefinieerd door het besturingssysteem.
Als de Handler voor Windows-foutenrapportage niet wordt aangeroepen, abort roept _exit u aan om het proces te beëindigen met afsluitcode 3 en wordt het besturingselement geretourneerd naar het bovenliggende proces of het besturingssysteem.
_exit maakt geen stroombuffers leeg of voert atexit/_onexit verwerking uit.
Om windows-compatibiliteitsredenen kan het, wanneer abort aanroepen _exit, de Windows-API ExitProcess aanroepen, waardoor DLL-beëindigingsroutines op zijn beurt kunnen worden uitgevoerd. Destructors worden niet uitgevoerd in het uitvoerbare bestand, maar hetzelfde geldt mogelijk niet voor DLL's die in de procesruimte van het uitvoerbare bestand zijn geladen. Dit gedrag voldoet niet strikt aan de C++-standaard. Als u een proces met inbegrip van DLL's onmiddellijk wilt beëindigen, gebruikt u de Windows-API TerminateProcess . U kunt ook een afgebroken signaalhandler registreren die aanroept TerminateProcess voor standaardconform gedrag. Nalevingsgedrag kan enige kosten met zich meebrengen in windows-compatibiliteit.
Zie CRT-foutopsporingstechnieken voor meer informatie over CRT-foutopsporing.
Microsoft-specifiek beëindigen
De globale status van deze functie is standaard gericht op de toepassing. Als u deze wilt wijzigen, raadpleegt u de globale status in de CRT.
Requirements
| Routine | Vereiste header |
|---|---|
abort |
<process.h> of <stdlib.h> |
Example
Het volgende programma probeert een bestand te openen en wordt afgebroken als de poging mislukt.
// 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
Zie ook
Gebruik abort
abort Functie
Proces- en omgevingsbeheer
_exec, _wexec functies
exit, _Exit_exit
raise
signal
_spawn, _wspawn functies
_DEBUG
_set_abort_behavior