IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Commande exit


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut Commande exit
    Bonjour,

    La commande exit(1) exécute-t'elle la fermeture de tous les fichiers ouverts dans le prog ?

    Merci de vos réponses.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    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 !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 401
    Points : 145
    Points
    145
    Par défaut
    Merci CSoldier.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    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.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    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 !

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Commande exit
    Citation Envoyé par licorne
    La commande exit(1)
    • 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.

    exécute-t'elle la fermeture de tous les fichiers ouverts dans le prog ?
    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.
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2013, 08h47
  2. command 'gcc' failed with exit status 1
    Par rezguiinfo dans le forum Debian
    Réponses: 2
    Dernier message: 02/02/2011, 17h01
  3. Commande exit sous OpenBSD
    Par Olivier Regnier dans le forum BSD
    Réponses: 1
    Dernier message: 04/09/2008, 13h27
  4. Exécuter la commande Exit
    Par irouni dans le forum Langage
    Réponses: 3
    Dernier message: 13/12/2007, 16h18
  5. Exit code d'une commande pipée
    Par _Mac_ dans le forum Linux
    Réponses: 19
    Dernier message: 26/10/2005, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo