ExitCodes plus grand que 255, possible?
Si oui, sur quel système d'exploitation, shell ou quoi?
Envisager la suite de programme java (je suis en utilisant java comme un exemple, n'importe quelle langue serait bon pour cette question, qui est plus sur les systèmes d'exploitation):
public class ExitCode {
public static void main(String args[]) {
System.exit(Integer.parseInt(args[0]));
}
}
Qu'il tourne sur Linux et bash, il renvoie toujours à des valeurs moins égal à 255, par exemple (echo $?
imprime le code de sortie de la précédente commande exécutée)
> java ExitCode 2; echo $?
2
> java ExitCode 128; echo $?
128
> java ExitCode 255; echo $?
255
> java ExitCode 256; echo $?
0
> java ExitCode 65536; echo $?
0
ÉDITÉ: le (seul, à ce jour) réponse ci-dessous à expliquer ce qui se passe sur les systèmes Unix. Je me demande encore aujourd'hui sur d'autres Systèmes d'exploitation.
InformationsquelleAutor Davide | 2008-10-07
Vous devez vous connecter pour publier un commentaire.
Pas possible sur Unix et dérivés. Le statut de sortie de l'information retournée se compose de deux champs de 8 bits, l'un contenant le statut de sortie, et l'autre contenant de l'information sur la cause du décès (0 ce qui implique sortie ordonnée en vertu du programme de contrôle, d'autres valeurs indiquant qu'un signal a tué, et indiquant si un noyau a été sous-évaluées).
Modernes de Windows, le système d'exploitation lui-même, et la valeur par défaut de la console shell (
CMD.EXE
), d'accepter et de montrer que les codes de sortie tout au long d'au moins l'ensemble de la gamme de 32 bits entiers signés. L'exécution de votre exemple ci-dessus dansCMD.EXE
donne les codes de sortie vous avez demandé :Windows n'a pas vraiment le concept de signaux Unix, ni d'essayer de détourner le code de sortie d'ajouter des informations supplémentaires, aussi longtemps que votre shell (ou quel que soit le programme se termine la lecture du code de sortie) ne pas faire cela, vous devez récupérer les codes de sortie de votre retour. Heureusement, les programmes qui utilisent Microsoft C runtime (y compris tous les programmes compilés avec MS Visual C++) préserver le code de sortie comme c'est la sortie du processus.
Windows a beaucoup plus de codes de sortie, plus de 14 000. (Je suis sûr que vous avez souvent vu certains d'entre eux sur votre propre écran).
Voici: