Auf TutorialsPoint.com wird exit der Wert 0
übergeben, während die Benutzer oft% co_de übergeben %. Ich habe sogar 1
Was bedeuten die verschiedenen Werte?
Per Konvention ruft ein Programm, das erfolgreich beendet wird, exit
(oder gibt main
) mit einem Wert von 0 zurück. Shell-Programme (die meisten Programme) suchen danach, ob ein Programm erfolgreich ausgeführt wurde oder nicht .
Jeder andere Wert wird als abnormaler Ausgang betrachtet. Was jeder dieser Werte bedeutet, wird durch das betreffende Programm definiert.
Auf Unix und ähnlichen Systemen werden nur die unteren 8 Bits des Exit-Werts als Exit-Code des Programms verwendet und bei einem Aufruf von wait
an den übergeordneten Prozess zurückgegeben. Der Aufruf von exit(n)
entspricht dem Aufruf von exit(n & 0xff)
Von der man-Seite :
Die Funktion
exit()
bewirkt eine normale Beendigung des Prozesses und den Wert ofstatus & 0377
wird an das übergeordnete Element zurückgegeben (siehewait
(2)).
Die einzigen portablen Werte, die an exit
übergeben werden können, sind 0
, EXIT_SUCCESS
und EXIT_FAILURE
. Die letzten beiden sind Makros, die in <stdlib.h>
definiert sind, derselbe Header, der die Funktion exit
deklariert.
Sowohl 0
als auch EXIT_SUCCESS
zeigen normalerweise an, dass das Programm erfolgreich war. EXIT_FAILURE
zeigt an, dass es irgendwie fehlgeschlagen ist. ( EXIT_SUCCESS
ist fast sicher als 0
definiert.)
Für UNIX-ähnliche Systeme ist EXIT_FAILURE
als 1
definiert, und exit(1)
ist ebenfalls üblich (allerdings etwas weniger portabel). Einige Betriebssysteme verwenden möglicherweise eine andere Konvention. zum Beispiel verwendet OpenVMS gerade Werte für Fehler und ungerade Werte für den Erfolg, mit einigen Spezialfällen, um exit(0)
einem Fehlerstatus zuzuordnen.
Andere Werte können von einigen Programmen verwendet werden, um verschiedene Arten von Fehlern anzuzeigen. Der Befehl grep
verwendet beispielsweise 0
, wenn eine Übereinstimmung gefunden wurde, 1
, wenn keine Übereinstimmung gefunden wurde, und 2
, wenn ein anderer Fehler aufgetreten ist.
ist dasselbe wie
%Vor%Die Rückgabewerte sind grundsätzlich Fehlercodes:
0
(oder Makro EXIT_SUCCESS
definiert in "stdlib.h"
) bedeutet erfolgreiche Programmbeendigung 1
(oder Makro EXIT_FAILURE
definiert in "stdlib.h"
) bedeutet Programmbeendigung wegen Fehler Andere Fehlercodes sind ebenfalls möglich, aber sie sind systemabhängig und somit nicht Teil des C-Standards, d. h. sie sind nicht tragbar.
Die Ausgangswerte sind programmabhängig. Die größte Überlegung ist wahrscheinlich, dass die meisten (alle?) Shells einen Rückgabewert von Null als Erfolg betrachten. Jeder andere Wert weist auf einen Fehler hin.