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.
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
Vi... J'avais, à tord, fait confiance à un bouquin qui prétendait que EXIT_SUCCESS valait zéro, ce qui n'est effectivement pas ce que dit la norme.
-- Éric Jacoboni, né il y a 1363190501 secondes
Vincent Lefevre
Dans l'article , Erwan David écrit:
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.
Non. Elle dit ceci:
If the value of status is zero or EXIT_SUCCESS, an implementation-defined form of the status successful termination is returned.
Dans les deux cas, on considère que le programme se termine avec succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes de succès avec certaines implémentations, y compris sous Unix. Ceci dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle implémentation, on ne peut pas dire a priori que l'un des choix est préférable à l'autre.
-- Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100% validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International des Jeux Mathématiques et Logiques, TETRHEX, etc. Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Dans l'article <85d6fp7e5s.fsf@bretagne.rail.eu.org>,
Erwan David <erwan@rail.eu.org> écrit:
Eric Jacoboni <jaco@teaser.fr> écrivait :
Erwan David <erwan@rail.eu.org> 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.
Non. Elle dit ceci:
If the value of status is zero or EXIT_SUCCESS, an
implementation-defined form of the status successful
termination is returned.
Dans les deux cas, on considère que le programme se termine avec
succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes
de succès avec certaines implémentations, y compris sous Unix. Ceci
dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle
implémentation, on ne peut pas dire a priori que l'un des choix est
préférable à l'autre.
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
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.
Non. Elle dit ceci:
If the value of status is zero or EXIT_SUCCESS, an implementation-defined form of the status successful termination is returned.
Dans les deux cas, on considère que le programme se termine avec succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes de succès avec certaines implémentations, y compris sous Unix. Ceci dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle implémentation, on ne peut pas dire a priori que l'un des choix est préférable à l'autre.
-- Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100% validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International des Jeux Mathématiques et Logiques, TETRHEX, etc. Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Laurent Wacrenier
Vincent Lefevre <vincent+ écrit:
Dans les deux cas, on considère que le programme se termine avec succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes de succès avec certaines implémentations, y compris sous Unix. Ceci dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle implémentation, on ne peut pas dire a priori que l'un des choix est préférable à l'autre.
Sur un système Posix, EXIT_SUCCESS s'évalue en 0.
Vincent Lefevre <vincent+news@vinc17.org> écrit:
Dans les deux cas, on considère que le programme se termine avec
succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes
de succès avec certaines implémentations, y compris sous Unix. Ceci
dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle
implémentation, on ne peut pas dire a priori que l'un des choix est
préférable à l'autre.
Dans les deux cas, on considère que le programme se termine avec succès. Mais rien ne dit qu'il ne peut pas y avoir plusieurs formes de succès avec certaines implémentations, y compris sous Unix. Ceci dit, si 0 et EXIT_SUCCESS font des choses différentes avec telle implémentation, on ne peut pas dire a priori que l'un des choix est préférable à l'autre.
Sur un système Posix, EXIT_SUCCESS s'évalue en 0.
root
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS Successful termination for exit(); evaluates to 0. ^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR [...] If EXPR is omitted, exits with 0 status. The only universally recognized values for EXPR are 0 for success and 1 for error; other values are subject to interpretation depending on the environment in which the Perl program is running."
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS
Successful termination for exit(); evaluates to 0.
^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR
[...]
If EXPR is omitted, exits with 0 status. The only universally recognized
values for EXPR are 0 for success and 1 for error; other values are
subject to interpretation depending on the environment in which the Perl
program is running."
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS Successful termination for exit(); evaluates to 0. ^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR [...] If EXPR is omitted, exits with 0 status. The only universally recognized values for EXPR are 0 for success and 1 for error; other values are subject to interpretation depending on the environment in which the Perl program is running."
Vincent Lefevre
Dans l'article , root écrit:
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS Successful termination for exit(); evaluates to 0. ^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR [...] If EXPR is omitted, exits with 0 status. The only universally recognized values for EXPR are 0 for success and 1 for error; other values are subject to interpretation depending on the environment in which the Perl program is running."
sauf que Perl n'existe pas que sous Unix. Certaines plateformes pourraient théoriquement avoir besoin d'une conversion valeur d'exit de Perl -> valeur d'exit du programme C (puisque Perl est écrit en C).
-- Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100% validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International des Jeux Mathématiques et Logiques, TETRHEX, etc. Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Dans l'article <pan.2003.08.06.09.22.44.935382@localhost.localdomain>,
root <root@localhost.localdomain> écrit:
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS
Successful termination for exit(); evaluates to 0.
^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR
[...]
If EXPR is omitted, exits with 0 status. The only universally recognized
values for EXPR are 0 for success and 1 for error; other values are
subject to interpretation depending on the environment in which the Perl
program is running."
sauf que Perl n'existe pas que sous Unix. Certaines plateformes
pourraient théoriquement avoir besoin d'une conversion valeur d'exit
de Perl -> valeur d'exit du programme C (puisque Perl est écrit en C).
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International
des Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
On Wed, 06 Aug 2003 07:42:40 +0200, Richard Delorme wrote:
Pour Unix, la norme dit (dans Susv3 pour l'en-tête stdlib.h) :
EXIT_SUCCESS Successful termination for exit(); evaluates to 0. ^^^^^^^^^^^^^^
Idem. pour Perl (doc du exit) :
" exit EXPR [...] If EXPR is omitted, exits with 0 status. The only universally recognized values for EXPR are 0 for success and 1 for error; other values are subject to interpretation depending on the environment in which the Perl program is running."
sauf que Perl n'existe pas que sous Unix. Certaines plateformes pourraient théoriquement avoir besoin d'une conversion valeur d'exit de Perl -> valeur d'exit du programme C (puisque Perl est écrit en C).
-- Vincent Lefèvre - Web: <http://www.vinc17.org/> - 100% validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat International des Jeux Mathématiques et Logiques, TETRHEX, etc. Work: CR INRIA - computer arithmetic / SPACES project at LORIA
kanze
DINH Viêt Hoà wrote in message news:...
Euh moi j'utilise return pour terminer ma fonction main, c pas bon ? Je dois plutôt utiliser exit ?
il vaut mieux utiliser exit.
Pourquoi ?
Moi, je travaille surtout en C++, où on préfère éviter exit (qui n'appelle pas les destructeurs des objets locaux). Mais bien avant, j'avais l'habitude de retourner de main ; je le trouve plus propre.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
DINH Viêt Hoà <dinh.viet.hoa@free.fr> wrote in message
news:<etPan.3f29a43e.7e63d9f4.4afc@homer>...
Euh moi j'utilise return pour terminer ma fonction main, c pas bon ?
Je dois plutôt utiliser exit ?
il vaut mieux utiliser exit.
Pourquoi ?
Moi, je travaille surtout en C++, où on préfère éviter exit (qui
n'appelle pas les destructeurs des objets locaux). Mais bien avant,
j'avais l'habitude de retourner de main ; je le trouve plus propre.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Euh moi j'utilise return pour terminer ma fonction main, c pas bon ? Je dois plutôt utiliser exit ?
il vaut mieux utiliser exit.
Pourquoi ?
Moi, je travaille surtout en C++, où on préfère éviter exit (qui n'appelle pas les destructeurs des objets locaux). Mais bien avant, j'avais l'habitude de retourner de main ; je le trouve plus propre.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16