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 :

parametre de la fonction exit


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 5
    Points
    5
    Par défaut parametre de la fonction exit
    dans la fonction
    qu'est ce qu'on doit mettre comme parametre ?
    si on a plusieurs processus , est ce qu'on doi mettre pour chacun une valeur differente?

  2. #2
    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
    Les parametres de sortie pour exit() sont 0, EXIT_SUCCESS et EXIT_FAILURE.

    Lorsque tu parles de plusieurs processus, tu parles dans le meme programme (multithread, fork, etc.)? Dans ce cas, exit() est remonte jusqu'au thread principal et tue l'ensemble du programme. Un programme ne renvoie qu'une seule valeur de sortie.

  3. #3
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    En fait, tu y mets plus ou moins ce que tu veux... L'essentiel étant que tu gardes une certaine cohérence dans tes codes d'erreurs... Par exemple, retourne -1 si les lectures echouent, -2 pour les écritures....

    Et le fait qu'il y ait plusieurs processus n'a pas d'influence : si tu n'as pas besoin de connaitre la valeur de retour du processus, retourne simplement 0 si la terminaison est normale, et 1 (ou -1) en cas d'erreur... (EXIT_SUCCES / FAILURE )

    Tout ça te sert à connaître plus précisemment les conditions de terminaison du processus, donc à toi de voir suivant tes besoins
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par DaZumba
    Les parametres de sortie pour exit() sont 0, EXIT_SUCCESS et EXIT_FAILURE.

    Lorsque tu parles de plusieurs processus, tu parles dans le meme programme (multithread, fork, etc.)? Dans ce cas, exit() est remonte jusqu'au thread principal et tue l'ensemble du programme. Un programme ne renvoie qu'une seule valeur de sortie.
    il n'y a pas que ces 3 valeurs qui ne sont d'ailleurs que 2 etant donnée que EXIT_SUCCESS = 0. Un programme peut renvoyer 0 en cas de réussite, 1 si il y 'a eu un probleme d'allocation et -1 si le probleme est à un autre niveau par exemple. http://man.developpez.com/man3/exit.3.php

  5. #5
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par capitN.flam
    il n'y a pas que ces 3 valeurs qui ne sont d'ailleurs que 2 etant donnée que EXIT_SUCCESS = 0. Un programme peut renvoyer 0 en cas de réussite, 1 si il y 'a eu un probleme d'allocation et -1 si le probleme est à un autre niveau par exemple. http://man.developpez.com/man3/exit.3.php
    Bien entendu...

    Mais ce que voulais dire DaZumba, c'est que ce sont ces seules valeurs la qui sont définies par la norme
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  6. #6
    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
    Citation Envoyé par capitN.flam
    il n'y a pas que ces 3 valeurs qui ne sont d'ailleurs que 2 etant donnée que EXIT_SUCCESS = 0.
    De facon portable, il n'y a que EXIT_SUCCESS et EXIT_FAILURE. Dire que EXIT_SUCCESS == 0 est faux (sous certaines versions anciennes de VMS, par exemple, 0 signifiait echec - evidemment, on hait les unixiens qui font un return 0 ou un exit(0) "parce que ca veut dire reussite".).

    Mon man 3 exit dit (et je suis d'accord avec lui) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           The  use of EXIT_SUCCESS and EXIT_FAILURE is slightly more portable (to
           non-Unix environments) than that of 0 and some nonzero value like 1  or
           -1. In particular, VMS uses a different convention.
     
           BSD  has  attempted  to  standardize  exit codes - see the file <sysexits.h>.

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par DaZumba
    De facon portable, il n'y a que EXIT_SUCCESS et EXIT_FAILURE.
    Je pense aussi que les seules valeurs qui devraient être utilisées sont ces deux là. Le système a juste besoin de savoir si c'est Ok ou non.
    Aprés les différentes valeurs suivant le type d'erreur sont à usage interne (le mieu est d'utiliser une énumération pour rester coohérent).

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    donc si j'ai bien compri , le parametre de la fonction exit() n'a aucune influance , il sert juste pour bien organiser le code c'est tout .

  9. #9
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par mehdi.creator
    donc si j'ai bien compri , le parametre de la fonction exit() n'a aucune influance , il sert juste pour bien organiser le code c'est tout .
    Euh je me suis mal exprimer les valeurs de la fonction exit serve pour l'OS à savoir si le programme c'est bien dérouler, tut comme la valeur retournée par le return de la fonction main!

  10. #10
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par mehdi.creator
    donc si j'ai bien compri , le parametre de la fonction exit() n'a aucune influance , il sert juste pour bien organiser le code c'est tout .
    pour completer ce que dit gege2061, la valeur de retour peut être testée par les programmes ayant appeler le tient, pas exemple make. Ainsi un compilateur fait l'équivalent d'un exit(0) s'il ne détecte pas d'erreur, sinon exit autre chose, ce qui permet à make de s'arreter lors d'une erreur, sauf option demandant le contraire.
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par capitN.flam
    etant donnée que EXIT_SUCCESS = 0.
    Seulement en POSIX (POSIX n'etant pas seulement implemente sur Unix, ca existe aussi sous windows). En C99 (et meme C90 autant que je sache), la valeur de EXIT_SUCCESS est laissee a l'implementation.

  12. #12
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par alveric
    En C99 (et meme C90 autant que je sache), la valeur de EXIT_SUCCESS est laissee a l'implementation.
    Exacte!
    EXIT_FAILURE
    EXIT_SUCCESS

  13. #13
    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
    Citation Envoyé par Pouic
    En fait, tu y mets plus ou moins ce que tu veux...
    Non. Ca pourrait très bien faire planter le système ou le shell (Comportement indéfini). Les valeurs sûres sont

    0
    EXIT_SUCCESS
    EXIT_FAILURE

    D'autres valeurs sont possibles, mais elles dépendent du système. (Par exemple en MS-DOS : 0-255)
    Pas de Wi-Fi à la maison : CPL

  14. #14
    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
    Citation Envoyé par capitN.flam
    il n'y a pas que ces 3 valeurs qui ne sont d'ailleurs que 2 etant donnée que EXIT_SUCCESS = 0.
    Qu'en sais-tu ? La norme dit que 0 et EXIT_SUCCESS on la même sémantique, mais pas qu'ils ont la même valeur.
    Un programme peut renvoyer 0 en cas de réussite, 1 si il y 'a eu un probleme d'allocation et -1 si le probleme est à un autre niveau par exemple.
    Uniquement si le système (ou le shell) supporte les valeurs 1 et -1, sinon le comportement est indéfini.
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    0
    Bah on vient de dire que non DaZumba affirme que ça ne passe pas partout

  16. #16
    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
    Citation Envoyé par gege2061
    Citation Envoyé par Emmanuel Delahaye
    0
    Bah on vient de dire que non DaZumba affirme que ça ne passe pas partout
    Si, 0 est sûr, mais ça ne veut pas dire que c'est la valeur qui est retournée au système. La magie du C peut se permettre de retourner 1 sur VMS alors qu'on a écrit 0.
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/08/2007, 12h25
  2. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20
  3. Réponses: 3
    Dernier message: 16/06/2004, 11h26
  4. [langage] passage de paramètres à une fonction
    Par BARBIER dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 15h46
  5. tableau dynamique en parametre d'une fonction
    Par drinkmilk dans le forum ASP
    Réponses: 4
    Dernier message: 27/04/2004, 16h35

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