Bonjour,
La commande exit(1) exécute-t'elle la fermeture de tous les fichiers ouverts dans le prog ?
Merci de vos réponses.
Bonjour,
La commande exit(1) exécute-t'elle la fermeture de tous les fichiers ouverts dans le prog ?
Merci de vos réponses.
Heu normalement le C ne fait rien à ta place, il faut tout faire toi même, d'où l'utilité d'enregistrer une fonction de nettoyage apres le chargement de ton programme avec la fonction atexit, ceci normalement, devrait pouvoir t'aider un peu dans ta tâche mais reste à toi de créer ta fonction de nettoyage
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Si les fichiers sont fermes par exit(). Mais la memoire n'est pas liberee, par contre, donc autant se fabriquer une jolie fonction de nettoyage. Ce n'est pas simple, notamment si exit() est appelee dans une sous-fonction ou l'on ne dispose pas en local des pointeurs vers les fichiers ouverts et la memoire allouee.
Le plus propre est que chaque sous-fonction retourne un code d'erreur a la fonction appelante (apres avoir effectue son nettoyage local), jusqu'a atteindre main() qui est seule responsable de terminer le programme (un return EXIT_??? suffit, alors).
Pour reference, la derniere version de la norme du langage C:
7.20.4.3 The exit function
Synopsis
1 #include <stdlib.h>
void exit(int status);
Description
2 The exit function causes normal program termination to occur. If more than one call to
the exit function is executed by a program, the behavior is undefined.
First, all functions registered by the atexit function are called, in the reverse order of
their registration,256) except that a function is called after any previously registered
functions that had already been called at the time it was registered. If, during the call to
any such function, a call to the longjmp function is made that would terminate the call
to the registered function, the behavior is undefined.
4 Next, all open streams with unwritten buffered data are flushed, all open streams are
closed, and all files created by the tmpfile function are removed.
5 Finally, control is returned to the host environment. If the value of status is zero or
EXIT_SUCCESS, an implementation-defined form of the status successful termination is
returned. If the value of status is EXIT_FAILURE, an implementation-defined form
of the status unsuccessful termination is returned. Otherwise the status returned is
implementation-defined.
Returns
6 The exit function cannot return to its caller.
Ha tiens j'ai au moins appris quelque chose aujourd'hui Le mieux reste tout de même de tout faire soi même je pense, enfin c'est dans mes habitudes
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Envoyé par licorne
- Il n'y a pas de 'commandes' en C. exit() est une fonction.
- 1 n'est pas une valeur portable. Pour retourner une information 'défaut' au système, passer la valeur portable EXIT_FAILURE. C'est fait pour.
Oui, mais compter dessus est faire preuve d'une fénéantise à toute épreuve. Et puis de nombreuses applications réelles tournent en permanence (pas de exit(), sauf erreur) 24/7.exécute-t'elle la fermeture de tous les fichiers ouverts dans le prog ?
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager