Welche int-Werte sind für exit () in C relevant?

7

Auf TutorialsPoint.com wird exit der Wert 0 übergeben, während die Benutzer oft% co_de übergeben %. Ich habe sogar 1

gesehen

Was bedeuten die verschiedenen Werte?

    
Stegosaurus 28.04.2016, 02:51
quelle

4 Antworten

8

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   of status & 0377 wird an das übergeordnete Element zurückgegeben (siehe wait (2)).

    
dbush 28.04.2016, 02:54
quelle
7

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.

    
Keith Thompson 28.04.2016 02:57
quelle
3
%Vor%

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.

    
plasmacel 28.04.2016 02:57
quelle
2

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.

    
Michael Albers 28.04.2016 02:53
quelle

Tags und Links