Quelqu'un peut-il me 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 que le programme a été terminé avec succès et qu'il est entièrement portable.exit(1)
(généralement) indique une fin non fructueuse. Cependant, son utilisation n'est pas portable.
Notez que la norme C définit EXIT_SUCCESS
et EXIT_FAILURE
pour renvoyer l'état de fin d'un programme C.
0
et EXIT_SUCCESS
sont les valeurs spécifiées par la norme pour indiquer une terminaison réussie. Toutefois, seul EXIT_FAILURE
est la valeur standard pour renvoyer une terminaison non fructueuse. 1
est utilisé pour la même chose dans de nombreuses implémentations.
Référence:
C99 Standard: 7.20.4.3 La fonction exit
Para 5
Enfin, le contrôle est renvoyé à l'environnement hôte. Si la valeur de status est zéro ou
EXIT_SUCCESS
, une forme définie par la mise en oeuvre de la terminaison avec succès du statut est renvoyée. Si la valeur de status estEXIT_FAILURE
, une forme définie par l'implémentation de la terminaison status non réussie est renvoyée. Sinon, le statut renvoyé est défini par implémentation.
exit
dans le langage C prend un entier représentant un statut de sortie.
En règle générale, un statut de sortie égal à 0 est considéré comme un succès ou une sortie intentionnelle provoquée par l'exécution réussie du programme.
Un statut de sortie égal à 1 est considéré comme un échec et signifie généralement que le programme a dû quitter pour une raison quelconque et qu'il n'a pas été en mesure de tout mener à bien dans le flux de programme normal.
Voici un ressource GN parlant du statut 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 le standard comme étant zéro.
EXIT_FAILURE
n'est pas limité par la norme à une seule, mais de nombreux systèmes l'implémentent comme telle.
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 de 1
pour différencier les différents types d’erreurs.
La différence est que la valeur renvoyée à l'environnement est 0
dans le premier cas et 1
dans le dernier cas:
$ ./prog_with_exit_0
$ echo $?
0
$
et
$ ./prog_with_exit_1
$ echo $?
1
$
Notez également que la valeur des macros EXIT_SUCCESS
et EXIT_FAILURE
utilisée comme argument de la fonction exit
est définie par l'implémentation, mais est généralement définie sur respectivement 0
et un nombre différent de zéro. (POSIX nécessite que EXIT_SUCCESS
soit 0). Donc généralement exit(0)
signifie un succès et exit(1)
un échec.
Un appel de fonction exit
avec un argument dans la fonction main
est équivalent à l'instruction return
avec le même argument.
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 du statut 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
exit(0)
se comporte comme return 0
dans la fonction main()
, exit(1)
se comporte comme return 1
. La norme est que main
fonction return 0
, si le programme s'est terminé avec succès alors que la valeur non nulle signifie que le programme a été arrêté avec une sorte d'erreur.
exit (0) équivaut à exit (EXIT_SUCCESS).
exit (1) équivaut à exit (EXIT_FAILURE).
En cas d'échec, toute valeur positive est renvoyée pour quitter le processus, que vous pouvez trouver sur Shell en utilisant $ ?.
Valeur supérieure à 128 causée par la terminaison du signal. Ainsi, si une commande Shell se termine par un signal, le statut de retour doit être (128 + numéro du signal).
Par exemple:
Si une commande Shell est terminée par SIGINT, alors $? donnera 130 (128 + 2) (Ici 2 est le numéro du signal pour SIGINT, vérifiez en utilisant kill -l)
Lorsque l'exécutable se termine (quitte), il renvoie une valeur au shell qui l'a exécuté. exit(0)
indique généralement que tout va bien, tandis que exit(1)
indique que quelque chose ne va pas.
exit () doit toujours être appelé avec une valeur entière et des valeurs non nulles sont utilisées comme codes d'erreur.
Voir aussi: tilisation de la fonction exit ()
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 ...
connaître sigaction
, watipid()
.. pour () ... tel .... API ...........