web-dev-qa-db-fra.com

Quelle est la difference entre exit (0) et exit (1) en C?

Quelqu'un peut-il me dire? Quelle est la différence entre exit(0) et exit(1) en langage C?

79
user2134555

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 est EXIT_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.

108
Alok Save

exit dans le langage C prend un entier représentant un statut de sortie.

Succès 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.

Échec de sortie

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.

10
Sam DeHaan

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.

9
sch

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.

2
ouah

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

2
mahtab

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.

1
Tomáš Šíma

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)

1
Sandeep_black

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.

0
Ed Heal

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 ()

0
Squig

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 ...........

0
Nikunj Patel