Résumant les commentaires et de morceaux de sorte qu'ils sont dans un seul endroit.
Un programme C a toujours un code de sortie, le programme peut décider pour elle-même si elle se termine normalement, en renvoyant une valeur de l' main
fonction ou en appelant l' exit
fonction. Si le programme se termine de façon anormale, par exemple par une erreur de segmentation, le système d'exploitation décide le code de sortie.
Dans Unix (Posix), le code de sortie est une valeur sur 8 bits: 0 à 255. Il est combiné avec certains autres métadonnées pour un état: les autres métadonnées comprennent des informations indiquant si le programme est arrêté normalement ou pas, si elle a été annulée en raison d'un signal, et si oui, lequel signal. Pour plus de détails, voir le wait(2) page de manuel.
Dans Unix, à la coquille, le statut de la commande précédente est accessible que l' $?
variable spéciale. Parce que le code de sortie est à seulement 8 bits, et il est traité comme un entier non signé, si vous retourner une valeur négative, il est transformé en positif: -1 devient 255. De même, si vous revenez d'une valeur supérieure à 255 le moins significatif de 8 bits sont utilisés: 256 devient 0.
Le type de retour d' main
est int
, plutôt que d' short
ou char
, car il n'y a aucun avantage à en faire un type plus petit, surtout à ce stade de l'histoire, des décennies après, il a été décidé. Changer c'est maintenant seulement causer des complications inutiles.
Si vous voulez exécuter un programme à partir de C, la bibliothèque standard fournit l' system
fonction main retourne l'état du programme. (À noter qu' system
d'exécuter des commandes via le shell, et vous devez être très prudent au sujet d'échapper à tout correctement si vous donnez la commande de l'extérieur, fourni les noms de fichiers ou d'autres choses sur la ligne de commande.)
Pour plus de flexibilité, vous pouvez exécuter d'autres programmes en utilisant le système des appels d' fork
, execl
(ou une de ses variantes, voir le exec(3) page de manuel), et wait
(déjà mentionné ci-dessus). C'est puissant et flexible, mais il est également facile de faire des erreurs, alors assurez-vous de lire la documentation et découvrez quelques exemples de programmes de première. (D'un autre côté, c'est très amusant d'apprendre ce genre de choses.)