on_exit - Programmer une fonction à appeler à la fin normale du
programme
Bibliothèque C standard (
libc,
-lc)
#include <stdlib.h>
int on_exit(void (*fonction)(int, void *), void *arg);
on_exit() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
Pour la glibc 2.19 et précédentes :
_BSD_SOURCE || _SVID_SOURCE
La fonction
on_exit() enregistre la
fonction à appeler
à la fin normale du programme, soit par l'appel à
exit(3), soit lors du retour de la fonction
main() du programme.
La
fonction reçoit le paramètre d'état transmis au
dernier appel à
exit(3) et le paramètre
arg
transmis à
on_exit().
La même fonction peut être enregistrée plusieurs
fois : elle sera appelée une fois pour chaque enregistrement.
Lorsqu'un processus enfant est créé avec
fork(2), il
hérite d'une copie des enregistrements de son parent. À la suite
d'un appel réussi à l'une des fonctions
exec(3), tous les
enregistrements sont supprimés.
La fonction
on_exit() renvoie
0 si elle réussit ;
sinon elle renvoie une valeur non nulle.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
on_exit() |
Sécurité des threads |
MT-Safe |
Cette fonction provient de SunOS 4 mais est également
présente dans la glibc. Elle n'apparaît plus dans Solaris
(SunOS 5). Les programmes portables ne devraient pas utiliser cette
fonction et devraient lui préférer la fonction standard
atexit(3).
Au moment où
fonction est exécutée, les variables de
la pile (
auto) peuvent déjà être hors de
portée. Ainsi,
arg ne doit pas être un pointeur sur une
variable de pile ; mais il peut par contre être un pointeur sur
une variable du tas ou une variable globale.
_exit(2),
atexit(3),
exit(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]> et David Prévot <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]