Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Code retour d'un pgm C

16 réponses
Avatar
Sébastien BERNARD
Bonjour,

Je travaille sous HP-UX et j'ai un soucis ave le code retour de mon
programme C : ma fonction main est déclarée en "int main(...)" et pourtant
je ne peux retourner que des valeurs positives entre 0 et 255. En tout cas
c'est ce que me dit le script quand j'affiche à l'intérieur de celui-ci le
code retour de mon programme.
Le programme ne plantant pas sur un code retour négatif, le pb vient
peut-être de mon script ? Dans le script j'intercepte le code retour via la
variable $?.

Où est mon erreur ?
Merci de votre aide,
Sébastien B.

10 réponses

1 2
Avatar
proj_tools
Tu n'as pas lu la doc.


Tout le monde n'a pas besoin de lire la documentation des appels
système UNIX pour faire du C...

Regarde par exemple le man de wait, et tu verras des macros comme
...


Avatar
Éric Lévénez
Le 31/07/03 13:40, dans ,
« Anh Tu NGUYEN TRONG » a écrit :

Tu n'as pas lu la doc.


Tout le monde n'a pas besoin de lire la documentation des appels
système UNIX pour faire du C...


Pour faire du C, il faut connaître le C, et là on apprend que exit ne peut
avoir que 3 valeurs : 0, EXIT_SUCCESS et EXIT_FAILURE. Pour passer autre
chose en argument, on ne fait plus du C standard, mais du C spécifique à une
plateforme. Étant posté dans un NG unix, une réponse unix s'impose.

PS : apprend à quoter correctement, tes réponses deviendrons lisibles.

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.


Avatar
DINH Viêt Hoà

Pour faire du C, il faut connaître le C, et là on apprend que exit ne peut
avoir que 3 valeurs : 0, EXIT_SUCCESS et EXIT_FAILURE. Pour passer autre
chose en argument, on ne fait plus du C standard, mais du C spécifique à une
plateforme. Étant posté dans un NG unix, une réponse unix s'impose.


tiré du draft de la norme C99 :
<<
[#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.




Bref, le résultat dépend de l'environnement dès qu'on commence à jouer
avec d'autres valeur. La démarche correcte serait donc de se renseigner
sur les valeurs utilisables dans l'environnement en question.

--
DINH V. Hoa,

"Il faut savoir arrêter l'alcool de temps en temps" -- MAB


Avatar
Éric Lévénez
Le 31/07/03 19:24, dans , « DINH Viêt
Hoà » a écrit :


Pour faire du C, il faut connaître le C, et là on apprend que exit ne peut
avoir que 3 valeurs : 0, EXIT_SUCCESS et EXIT_FAILURE. Pour passer autre
chose en argument, on ne fait plus du C standard, mais du C spécifique à une
plateforme. Étant posté dans un NG unix, une réponse unix s'impose.


tiré du draft de la norme C99 :
<<
[#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.




Bref, le résultat dépend de l'environnement dès qu'on commence à jouer
avec d'autres valeur. La démarche correcte serait donc de se renseigner
sur les valeurs utilisables dans l'environnement en question.


Tu crois que tu as dit autre chose que ce que j'ai dit dans ce message et
dans le précédant ? Tu penses que quoter le draft en anglais dans un NG
français est une bonne chose ?

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.



Avatar
Laurent Wacrenier
Éric Lévénez écrit:

Tu crois que tu as dit autre chose que ce que j'ai dit dans ce message et
dans le précédant ? Tu penses que quoter le draft en anglais dans un NG
français est une bonne chose ?


exit peut prendre d'autres valeurs que 0, EXIT_SUCCESS ou
EXIT_FAILURE. Par contre, avec ces valeurs, la norme ne dit pas
comment le système doit prendre en compte le retour.

Avatar
Eric Jacoboni
Éric Lévénez writes:

Pour faire du C, il faut connaître le C, et là on apprend que exit ne peut
avoir que 3 valeurs : 0, EXIT_SUCCESS et EXIT_FAILURE.


Je croyais que, justement, EXIT_SUCCESS et EXIT_FAILURE étaient là
pour éviter de supposer qu'il fallait renvoyer 0 pour indiquer une
exécution réussie ? Quel intérêt du 0, alors ?

--
Éric Jacoboni, né il y a 1363133517 secondes

Avatar
DINH Viêt Hoà

Euh moi j'utilise return pour terminer ma fonction main, c pas bon ? Je dois
plutôt utiliser exit ?


il vaut mieux utiliser exit.

--
DINH V. Hoa,

"Il faut savoir arrêter l'alcool de temps en temps" -- MAB

Avatar
Eric Jacoboni
Erwan David writes:

Aucun, 0 et EXIT_SUCCESS ont le même effet.


Merci de confirmer... ils ont le même effet actuellement et sur la
plupart des plateformes, mais rien ne dit que ça va durer : donc
renvoyer 0 directement, c'est mal.
--
Éric Jacoboni, né il y a 1363173500 secondes

Avatar
Jean-Marc Bourguet
Eric Jacoboni writes:

Erwan David writes:

Aucun, 0 et EXIT_SUCCESS ont le même effet.


Merci de confirmer... ils ont le même effet actuellement et sur la
plupart des plateformes, mais rien ne dit que ça va durer :


Si la norme.

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Erwan David
Eric Jacoboni écrivait :

Erwan David writes:

Aucun, 0 et EXIT_SUCCESS ont le même effet.


Merci de confirmer... ils ont le même effet actuellement et sur la
plupart des plateformes, mais rien ne dit que ça va durer : donc
renvoyer 0 directement, c'est mal.


La norme dit que ça doit faire la même chose. Maintenant si la norme
change de manière incompatible elle peut tout aussi bien virer le exit

--
Monde de merde


1 2