Megosztás a következőn keresztül:


abort

Megszakítja az aktuális folyamatot, és egy hibakódot ad vissza.

Megjegyzés:

Ne használja ezt a módszert a Microsoft Store-alkalmazások vagy az univerzális Windows-platform (UWP) alkalmazások leállítására, kivéve a tesztelési vagy hibakeresési forgatókönyveket. Az Áruházbeli alkalmazások bezárásának programozott vagy felhasználói felületi módjai nem engedélyezettek a Microsoft Store szabályzatai szerint. További információ: UWP alkalmazás életciklusa.

Szemantika

void abort( void );

Visszaadott érték

abort nem adja vissza az irányítást a hívási folyamatnak. Alapértelmezés szerint egy megszakított jelkezelőt keres, és ha be van állítva, emel SIGABRT . Ezután abort leállítja az aktuális folyamatot, és visszaad egy kilépési kódot a szülőfolyamatnak.

Megjegyzések

Microsoft-specifikus

Alapértelmezés szerint, ha egy alkalmazás a hibakeresési futtatókörnyezet-kódtárral van létrehozva, a abort rutin hibaüzenetet jelenít meg a probléma felmerülése előtt SIGABRT . Konzol módban futó konzolalkalmazások esetén a rendszer elküldi az üzenetet a következő címre STDERR: . Az ablakos módban futó asztali Windows-alkalmazások és konzolalkalmazások üzenetmezőben jelenítik meg az üzenetet. Az üzenet letiltásához törölje _set_abort_behavior a jelölőt _WRITE_ABORT_MSG . A megjelenített üzenet a használt futtatókörnyezet verziójától függ. A Visual C++ legújabb verzióival készült alkalmazások esetében az üzenet a következőhöz hasonló:

R6010 – megszakítás() lett meghívva

A C futtatókörnyezeti kódtár korábbi verzióiban ez az üzenet jelenik meg:

Ez az alkalmazás azt kérte a futtatókörnyezettől, hogy szokatlan módon állítsa le. További információért forduljon az alkalmazás támogatási csapatához.

Ha a program hibakeresési módban van lefordítva, az üzenetmező megjeleníti a megszakítás, az újrapróbálkozás vagy a mellőzés beállításait. Ha a felhasználó a megszakítást választja, a program azonnal leáll, és egy 3-os kilépési kódot ad vissza. Ha a felhasználó az Újrapróbálkozást választja, a rendszer meghív egy hibakeresőt az igény szerint végzett hibakereséshez, ha elérhető. Ha a felhasználó a Mellőzés lehetőséget választja, abort folytatja a normál feldolgozást.

A kiskereskedelmi és hibakeresési buildekben is ellenőrizze, abort hogy be van-e állítva egy megszakított jelkezelő. Ha egy nem alapértelmezett jelkezelő van beállítva, abort hívja a következőt raise(SIGABRT): . A függvény használatával signal társíthat megszakított jelkezelő függvényt a SIGABRT jelhez. Egyéni műveleteket hajthat végre , például törölheti az erőforrásokat vagy naplóadatokat, és saját hibakóddal leállíthatja az alkalmazást a kezelőfüggvényben. Ha nincs definiálva egyéni jelkezelő, abort akkor nem emeli ki a SIGABRT jelet.

Az asztali vagy konzolalkalmazások abort nem hibakeresési buildjeiben alapértelmezés szerint meghívja a Windows hibajelentési szolgáltatás mechanizmusát (korábbi nevén Dr. Watson), hogy jelentse a hibákat a Microsoftnak. Ez a viselkedés a jelölő meghívásával _set_abort_behavior és beállításával vagy maszkolásával _CALL_REPORTFAULT engedélyezhető vagy letiltható. Ha a jelző be van állítva, a Windows megjelenít egy üzenetmezőt, amely a következőhöz hasonló szöveget tartalmaz: "Probléma miatt a program nem működik megfelelően". A felhasználó dönthet úgy, hogy hibakeresőt hív meg egy Hibakeresés gombbal, vagy a Program bezárása gombra kattintva leállítja az alkalmazást egy, az operációs rendszer által definiált hibakóddal.

Ha a Windows hibajelentés-kezelője nem hívható meg, akkor abort a _exit 3. kilépési kóddal állítsa le a folyamatot, és visszaadja a vezérlést a szülőfolyamatnak vagy az operációs rendszernek. _exit nem üríti ki a streampuffereket, és nem végez feldolgozást atexit/_onexit .

A Windows kompatibilitási okokból hívás esetén abort_exitmeghívhatja a Windows ExitProcess API-t, amely lehetővé teszi a DLL-megszakítási rutinok futtatását. A destruktorok nem futtathatók a végrehajtható fájlban, de ugyanez nem feltétlenül igaz a végrehajtható folyamatterületre betöltött DLL-ekhez. Ez a viselkedés nem felel meg szigorúan a C++ szabványnak. Ha azonnal le szeretne mondani egy folyamatot, beleértve a DLL-eket is, használja a Windows TerminateProcess API-t. Regisztrálhat egy megszakított jelkezelőt is, amely szabványos viselkedésre hív meg TerminateProcess . A windowsos kompatibilitás bizonyos költségekkel járhat.

A CRT-hibakeresésről további információt a CRT hibakeresési technikáiban talál.

Microsoft-specifikus végpont

Alapértelmezés szerint ennek a függvénynek a globális állapota hatóköre az alkalmazásra terjed ki. A módosításhoz tekintse meg a globális állapotot a CRT-ben.

Requirements

Rutin Kötelező fejléc
abort <process.h> vagy <stdlib.h>

Example

A következő program megpróbál megnyitni egy fájlt, és leáll, ha a kísérlet meghiúsul.

// 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

Lásd még

Használva abort
abort függvény
Folyamat- és környezetvezérlés
_exec, _wexec függvények
exit, , _Exit_exit
raise
signal
_spawn, _wspawn függvények
_DEBUG
_set_abort_behavior