dans la fonction
qu'est ce qu'on doit mettre comme parametre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part int exit(int param)
si on a plusieurs processus , est ce qu'on doi mettre pour chacun une valeur differente?
dans la fonction
qu'est ce qu'on doit mettre comme parametre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part int exit(int param)
si on a plusieurs processus , est ce qu'on doi mettre pour chacun une valeur differente?
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.
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
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.phpEnvoyé par DaZumba
Bien entendu...Envoyé par capitN.flam
Mais ce que voulais dire DaZumba, c'est que ce sont ces seules valeurs la qui sont définies par la norme
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".).Envoyé par capitN.flam
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>.
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.Envoyé par DaZumba
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).
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!Envoyé par mehdi.creator
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.Envoyé par mehdi.creator
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
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.Envoyé par capitN.flam
Exacte!Envoyé par alveric
EXIT_FAILURE
EXIT_SUCCESS
Non. Ca pourrait très bien faire planter le système ou le shell (Comportement indéfini). Les valeurs sûres sontEnvoyé par Pouic
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
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.Envoyé par capitN.flam
Uniquement si le système (ou le shell) supporte les valeurs 1 et -1, sinon le comportement est indéfini.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.
Pas de Wi-Fi à la maison : CPL
Bah on vient de dire que non DaZumba affirme que ça ne passe pas partoutEnvoyé par Emmanuel Delahaye
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.Envoyé par gege2061
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