ExitCodes größer als 255, möglich?

Wenn ja, auf welchem ​​Betriebssystem, Shell oder was?

Betrachten Sie das folgende Java-Programm (Ich benutze Java nur als Beispiel, jede Sprache wäre gut für diese Frage, die mehr über Betriebssysteme ist):

public class ExitCode { public static void main(String args[]) { System.exit(Integer.parseInt(args[0])); } } 

Wird es unter Linux und bash ausgeführt, gibt es immer Werte kleiner gleich 255 zurück, zB ( echo $? Gibt den Exit-Code des zuvor ausgeführten Befehls aus)

 > 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 

EDITED: Die (bisher einzige) Antwort unten erklärt vollständig, was auf UNIXen passiert. Ich frage mich immer noch über andere Betriebssysteme.

Unter Unix und Derivaten nicht möglich. Die zurückgegebenen Exit-Statusinformationen bestehen aus zwei 8-Bit-Feldern, von denen das eine den Exit-Status enthält und das andere Informationen über die Todesursache enthält (0 bedeutet ordnungsgemäßen Beenden unter Programmsteuerung, andere Werte geben an, dass ein Signal sie getötet hat) ein core wurde abgeladen).

Auf modernen Windows-Betriebssystemen akzeptieren und zeigen das Betriebssystem selbst und die Standardkonsolen-Shell ( CMD.EXE ) Exit-Codes für mindestens den gesamten Bereich von 32-Bit-Ganzzahlen mit CMD.EXE . CMD.EXE das obige Beispiel in CMD.EXE Sie folgende Exit-Codes:

 > java ExitCode 2 > echo %errorlevel% 2 > java ExitCode 128 > echo %errorlevel% 128 > java ExitCode 255 > echo %errorlevel% 255 > java ExitCode 256 > echo %errorlevel% 256 > java ExitCode 65536 > echo %errorlevel% 65536 

Windows hat nicht wirklich das Konzept von Unix-Signalen und versucht auch nicht, den Exit-Code zu entführen, um zusätzliche Informationen hinzuzufügen, solange Ihre Shell (oder welches Programm auch immer den Exit-Code liest) dies auch nicht tut. Sie sollten die Exit-Codes zurück erhalten, die Sie zurückgegeben haben. Glücklicherweise behalten Programme, die die C-Laufzeit von Microsoft verwenden (einschließlich aller Programme, die mit MS Visual C ++ kompiliert wurden), den Exit-Code bei, ebenso wie er die processe beendet.

Windows hat viele weitere Exit-Codes, mehr als 14.000. (Ich bin sicher, dass Sie einige von ihnen oft auf Ihrem eigenen Bildschirm gesehen haben).

Hier kommt:

  • Eine Liste der Windows-Beendigungscodes .
  • PowerShell-Skript, um sie zu testen .