on_exit - registriert eine Funktion für den Aufruf bei normalem Abschluss
des Prozesses
Standard-C-Bibliothek (
libc,
-lc)
#include <stdlib.h>
int on_exit(void (*funktion)(int, void *), void *arg);
on_exit():
Seit Glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 und älter:
_BSD_SOURCE
Die Funktion
on_exit() registriert die angegebene Funktion
funktion, damit diese bei normaler Prozessbeendigung aufgerufen wird.
Also durch
exit(3) oder nach Verlassen der
main-Funktion des
Programms. Der Funktion
funktion wird das Argument
status des
letzten Aufrufes von
exit(3) und das Argument
arg von
on_exit() übergeben.
Die gleiche Funktion kann mehrfach registriert werden: sie wird einmal
für jede Registrierung aufgerufen.
Wenn mittels
fork(2) ein Kindprozess erstellt wird, erbt er Kopien der
Registrierungen seines Elternprozesses. Nach einem erfolgreichen Aufruf einer
der
exec(3)-Funktionen werden alle Registrierungen entfernt.
Die Funktion
on_exit() gibt im Erfolgsfall 0 zurück, anderenfalls
ist der Rückgabewert ungleich 0.
Siehe
attributes(7) für eine Erläuterung der in diesem
Abschnitt verwandten Ausdrücke.
Schnittstelle |
Attribut |
Wert |
on_exit() |
Multithread-Fähigkeit |
MT-Safe |
Diese Funktion stammt aus SunOS 4, ist aber auch in der Glibc vorhanden. Sie
tritt nicht mehr in Solaris (SunOS 5) auf. Portierbare Anwendungen sollten
diese Funktion meiden; verwenden Sie stattdessen die Standardfunktion
atexit(3).
Zum Zeitpunkt der Ausführung von
funktion könnten
Stack-Variablen (
auto) bereits den Geltungsbereich verlassen haben.
Daher sollte
arg kein Zeiger auf eine Stack-Variable sein; er kann
allerdings ein Zeiger auf eine Heap-Variable oder eine globale Variable sein.
_exit(2),
atexit(3),
exit(3)
Die deutsche Übersetzung dieser Handbuchseite wurde von Stefan Janke
<
[email protected]>, Martin Eberhard Schauer
<
[email protected]> und Mario Blättermann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer