Quelqu'un peut-il me le dire? Quelle est la différence entre exit(0)
et exit(1)
en langage C?
Quelle est la différence entre exit(0)
et exit(1)
en langage C?
exit(0)
indique la fin réussie du programme et il est entièrement portable, tandis que
exit(1)
(généralement) indique une fin infructueuse. Cependant, son utilisation n'est pas portable.
Notez que la norme C définit EXIT_SUCCESS
et EXIT_FAILURE
renvoie l'état de terminaison d'un programme C.
0
et EXIT_SUCCESS
sont les valeurs spécifiées par la norme pour indiquer une terminaison réussie, cependant, seule EXIT_FAILURE
est la valeur standard pour renvoyer une terminaison infructueuse. 1
est utilisé pour la même chose dans de nombreuses implémentations.
Référence:
C99 Standard: 7.20.4.3 La exit
fonction
Para 5
Enfin, le contrôle est retourné à l'environnement hôte. Si la valeur de statut est zéro ou
EXIT_SUCCESS
, une forme définie par l'implémentation du statut de fin réussie est renvoyée. Si la valeur de statut estEXIT_FAILURE
, une forme définie par l'implémentation du statut de fin d'échec est renvoyée. Sinon, l'état renvoyé est défini par l'implémentation.
EXIT_FAILURE
) est donc insuffisante.exit
est la moindre de vos préoccupations (bon sang, il se peut qu'il n'y ait même pas de bibliothèque C disponible là-bas. RIEN N'EST PORTABLE !!! 111).exit
avec une valeur impaire indique un succès.exit(0)
est traité comme un cas particulier par souci de conformité C. Oui, POSIX est un standard, mais tous les systèmes ne s'y conforment pas. Si vous souhaitez écrire du code qui suppose POSIX, vous êtes libre de le faire, mais cela limite la portabilité de votre code.exit
en langage C prend un entier représentant un état de sortie.Quitter le succès
En règle générale, un état de sortie de 0 est considéré comme un succès ou une sortie intentionnelle causée par l'exécution réussie du programme.
Échec de sortie
Un état de sortie de 1 est considéré comme un échec et signifie le plus souvent que le programme a dû se fermer pour une raison quelconque et n'a pas pu tout terminer avec succès dans le déroulement normal du programme.
Voici une ressource GNU qui parle de l'état de sortie.
Comme @Als l'a indiqué, deux constantes doivent être utilisées à la place de 0 et 1.
EXIT_SUCCESS
est défini par la norme comme étant zéro.EXIT_FAILURE
n'est pas limité par la norme à être un, mais de nombreux systèmes l'implémentent comme un seul.la source
exit(0)
indique que le programme s'est terminé sans erreur.exit(1)
indique qu'il y a eu une erreur.Vous pouvez utiliser des valeurs différentes autres que
1
pour différencier différents types d'erreurs.la source
La différence est que la valeur renvoyée à l'environnement est
0
dans le premier cas et1
dans le second cas:et
Notez également que la valeur des macros
EXIT_SUCCESS
etEXIT_FAILURE
utilisée comme argument de laexit
fonction sont définies par l'implémentation, mais sont généralement définies respectivement sur0
un nombre différent de zéro. (POSIX doitEXIT_SUCCESS
être égal à 0). Celaexit(0)
signifie généralement un succès etexit(1)
un échec.Un
exit
appel de fonction avec un argument dansmain
function est équivalent à l'instructionreturn
avec le même argument.la source
exit est un appel système utilisé pour terminer un processus en cours à partir duquel il est appelé. Le paramètre à quitter est utilisé pour informer le processus parent de l'état du processus enfant. Ainsi, exit (0) peut être utilisé (et souvent utilisé) pour indiquer l'exécution réussie d'un processus et exit (1) pour signaler une erreur. lien de référence
la source
exit(0)
se comporter commereturn 0
enmain()
fonction,exit(1)
se comporter commereturn 1
. La norme est, cettemain
fonctionreturn 0
, si le programme s'est terminé avec succès alors qu'une valeur non nulle signifie que le programme s'est terminé avec une sorte d'erreur.la source
exit (0) équivaut à exit (EXIT_SUCCESS).
exit (1) équivaut à exit (EXIT_FAILURE).
En cas d'échec normalement, toute valeur positive est renvoyée pour quitter le processus, que vous pouvez trouver sur le shell en utilisant $ ?.
Valeur supérieure à 128 provoquée par le signal. Donc, si une commande shell se termine par un signal, l'état de retour doit être (128 + numéro de signal).
Par exemple:
Si une commande shell se termine par SIGINT, alors $? donnera 130 (128 + 2) (Ici 2 est le numéro de signal pour SIGINT, vérifiez en utilisant kill -l)
la source
Lorsque l'exécutable se termine (se termine), il renvoie une valeur au shell qui l'a exécuté.
exit(0)
indique généralement que tout va bien, tandisexit(1)
que cela indique que quelque chose ne va pas.la source
exit () doit toujours être appelé avec une valeur entière et des valeurs non nulles sont utilisées comme codes d'erreur.
Voir aussi: Utilisation de la fonction exit ()
la source
exit(0)
signifie que le programme (processus) se termine normalement avec succès.exit(1)
signifie que le programme (processus) se termine normalement sans succès.Si vous voulez observer cela, vous devez connaître la gestion des signaux et la gestion des processus sous Unix ...
savoir
sigaction
,watipid()
..for () ... tel .... API ...........la source
exit function
. Dans le langage de programmation C, la fonction de sortie appelle toutes les fonctions enregistrées avec à la sortie et termine le programme.exit(1)
signifie que le programme (processus) se termine sans succès. Les tampons de fichiers sont vidés, les flux sont fermés et les fichiers temporaires sont supprimésexit(0)
signifie que le programme (processus) s'est terminé avec succès.la source