ExitCodes größer als 255 sind möglich?
-
05-07-2019 - |
Frage
Wenn ja, auf welchem Betriebssystem, shell oder was auch immer?
Betrachten Sie das folgende java-Programm (ich bin mit java nur als Beispiel, jede Sprache ist gut für diese Frage, die mehr über die Betriebs-Systeme):
public class ExitCode {
public static void main(String args[]) {
System.exit(Integer.parseInt(args[0]));
}
}
Es läuft auf Linux und bash, es gibt immer Werte kleiner gleich 255, z.B.(echo $?
druckt den exit-code des vorherigen Befehls)
> 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
BEARBEITET:die (nur noch) Antwort unten vollständig erklären, was passiert auf UNIX-Varianten.Ich bin immer noch Fragen, über andere Betriebssysteme.
Lösung
Nicht möglich ist es auf Unix und Derivate.Der exit-status-Informationen zurückgegeben, besteht aus zwei 8-bit-Felder, die eine enthält den exit-status, und die andere mit Informationen über die Ursache des Todes (0 impliziert geordneten Austritt unter Programm-Kontrolle, andere Werte anzeigt, dass ein signal getötet, und der angibt, ob ein Kern abgelagert wurde).
Andere Tipps
Auf modernen Windows-Betriebssystem selbst, und die Standard-Konsole shell - (CMD.EXE
), zu akzeptieren und zu zeigen, exit-codes ganz zumindest ist auch die ganze Palette von 32-bit-Ganzzahlen mit Vorzeichen.Läuft Ihr Beispiel weiter oben CMD.EXE
gibt den exit-codes, die Sie gefragt, für :
> 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-Signale, noch wird es versuchen, Sie zu entführen der exit-code, um zusätzliche Informationen hinzuzufügen, so lange, wie Sie Ihre shell (oder was auch immer Programm endet Lesen der exit-code) nicht, dass entweder, sollten Sie wieder die exit-codes zurückgegeben wurde.Zum Glück, Programme, Microsoft C runtime (inklusive aller Programme zusammengestellt mit dem MS Visual C++) Erhaltung der exit-code ist aus bestehenden Prozesse.
Windows hat viele weitere exit-codes über 14.000.(Ich bin mir sicher, dass Sie oft sah einige von Ihnen auf dem eigenen Bildschirm).
Hier kommt: