Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

atexit - Beendigungsroutinen registrieren

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

int atexit(void (*funkt) (void));

Mit atexit wird eine Funktion funkt registriert, die bei normaler Programmbeendigung
ausgeführt werden soll. Sie hat keine Parameter.

Returnwert

0        

!= 0

bei erfolgreicher Registrierung der Funktion.

bei Fehler.

Hinweise

Es können bis zu 40 Funktionen registriert werden. Die Funktionen werden in der
umgekehrten Reihenfolge ihrer Registrierung aufgerufen. Wird eine Funktion mehrmals
registriert, wird sie auch mehrmals aufgerufen.

Die mit atexit registrierten Funktionen werden nur aufgerufen, wenn das Programm auf
eine der folgenden Arten „normal“ beendet wird:

  • bei explizitem Aufruf der Funktion exit,

  • bei Beendigung der main-Funktion ohne expliziten exit-Aufruf,

  • bei Beendigung des Programms durch das C-Laufzeitsystem mit exit(-1), das heißt
    bei Auftritt eines raise-Signals (nicht SIGABRT), das entweder nicht oder durch die
    signal-Standardfunktion SIG_DFL behandelt wird (siehe signal).

Erst nachdem alle Beendigungsroutinen abgearbeitet sind, werden ggf. noch geöffnete
Dateien automatisch geschlossen.

Beispiel

Die mit atexit registrierten Beendigungsroutinen end1 und end2 werden nach Beendigung
der main-Funktion in der Reihenfolge end2, end1 ausgeführt.

#include <stdlib.h>
#include <stdio.h>
void end1(void);
void end2(void);
int main(void)
{
   atexit(end1);
   atexit(end2);
   printf("main-Funktion\n");
   return 0;
}
void end1(void)
{
   printf("end1-Routine\n");
}
void end2(void)
{
   printf("end2-Routine\n");
}

Siehe auch

exit, raise, signal