Antworten:
Was ist der Unterschied zwischen exit(0)und exit(1)in C-Sprache?
exit(0)zeigt eine erfolgreiche Programmbeendigung an und ist vollständig portabel, während
exit(1)(normalerweise) eine nicht erfolgreiche Beendigung angezeigt wird. Die Verwendung ist jedoch nicht portabel.
Beachten Sie, dass der C-Standard den Beendigungsstatus eines C-Programms definiert EXIT_SUCCESSund EXIT_FAILUREzurückgibt.
0und EXIT_SUCCESSsind die vom Standard angegebenen Werte, um eine erfolgreiche Beendigung EXIT_FAILUREanzuzeigen. Dies ist jedoch nur der Standardwert für die Rückgabe einer nicht erfolgreichen Beendigung. 1wird jedoch in vielen Implementierungen für dasselbe verwendet.
Referenz:
C99 Standard: 7.20.4.3 Die exitFunktion
Abs. 5
Schließlich wird die Kontrolle an die Hostumgebung zurückgegeben. Wenn der Wert von status Null ist oder
EXIT_SUCCESSeine implementierungsdefinierte Form der erfolgreichen Beendigung des Status zurückgegeben wird. Wenn der Wert von status istEXIT_FAILURE, wird eine implementierungsdefinierte Form des Status erfolglose Beendigung zurückgegeben. Andernfalls ist der zurückgegebene Status implementierungsdefiniert.
exitder geringste Problem ist (Hölle, könnte es nicht einmal sein eine C - Bibliothek zur Verfügung gibt. NICHTS ist tragbar !!! 111).
exitmit einem ungeraden Wert Erfolg. exit(0)wird aus Gründen der C-Konformität als Sonderfall behandelt. Ja, POSIX ist ein Standard, aber nicht alle Systeme entsprechen diesem Standard. Wenn Sie Code schreiben möchten, der POSIX voraussetzt, können Sie dies tun, dies schränkt jedoch die Portabilität Ihres Codes ein.
exit In der Sprache C wird eine Ganzzahl verwendet, die einen Exit-Status darstellt.
In der Regel wird ein Exit-Status von 0 als Erfolg oder als absichtlicher Exit angesehen, der durch die erfolgreiche Ausführung des Programms verursacht wird.
Ein Exit-Status von 1 wird als Fehler angesehen und bedeutet meistens, dass das Programm aus irgendeinem Grund beendet werden musste und nicht in der Lage war, alles im normalen Programmablauf erfolgreich abzuschließen.
Hier ist eine GNU-Ressource , die sich mit dem Exit-Status befasst.
Wie @Als angegeben hat, sollten anstelle von 0 und 1 zwei Konstanten verwendet werden.
EXIT_SUCCESS wird durch den Standard als Null definiert.
EXIT_FAILURE wird durch den Standard nicht auf eins beschränkt, aber viele Systeme implementieren ihn als eins.
Der Unterschied besteht darin, dass der an die Umgebung zurückgegebene Wert 0im ersteren Fall und 1im letzteren Fall ist:
$ ./prog_with_exit_0
$ echo $?
0
$
und
$ ./prog_with_exit_1
$ echo $?
1
$
Beachten Sie auch, dass der Makrowert EXIT_SUCCESSund EXIT_FAILUREder als exitFunktionsargument verwendete Wert für die Implementierung definiert sind, jedoch normalerweise auf 0eine Zahl ungleich Null festgelegt sind . (POSIX muss EXIT_SUCCESS0 sein). Bedeutet also normalerweise exit(0)Erfolg und exit(1)Misserfolg.
Ein exitFunktionsaufruf mit einem Argument in mainfunction entspricht der Anweisung returnmit demselben Argument.
exit ist ein Systemaufruf, mit dem ein laufender Prozess beendet wird, von dem aus er aufgerufen wird. Der zu beendende Parameter wird verwendet, um den übergeordneten Prozess über den Status des untergeordneten Prozesses zu informieren. So kann exit (0) verwendet (und häufig verwendet) werden, um die erfolgreiche Ausführung eines Prozesses anzuzeigen, und exit (1), um einen Fehler zu kennzeichnen. Referenzlink
exit(0)benimm dich wie return 0in der main()Funktion, exit(1)benimm dich wie in der Funktion return 1. Der Standard ist, dass diese mainFunktion return 0, wenn das Programm erfolgreich beendet wurde, während ein Wert ungleich Null bedeutet, dass das Programm mit einem Fehler beendet wurde.
exit (0) entspricht exit (EXIT_SUCCESS).
exit (1) entspricht exit (EXIT_FAILURE).
Bei einem Fehler wird normalerweise ein positiver Wert zurückgegeben, um den Prozess zu beenden, den Sie mit $? Auf der Shell finden können.
Wert mehr als 128, der die Beendigung durch Signal verursacht. Wenn also ein Shell-Befehl durch ein Signal beendet wird, muss der Rückgabestatus (128 + Signalnummer) sein.
Beispielsweise:
Wenn ein Shell-Befehl von SIGINT beendet wird, wird $? gibt 130 (128 + 2) (Hier ist 2 die Signalnummer für SIGINT, überprüfen Sie mit kill -l)
exit () sollte immer mit einem ganzzahligen Wert aufgerufen werden und Werte ungleich Null werden als Fehlercodes verwendet.
Siehe auch: Verwendung der Funktion exit ()
exit(0) bedeutet, dass Programm (Prozess) normal erfolgreich beendet wird.
exit(1) bedeutet, dass Programm (Prozess) normalerweise erfolglos beendet wird.
Wenn Sie dies beobachten möchten, müssen Sie die Signalverarbeitung und das Prozessmanagement unter Unix kennen ...
wissen über sigaction, watipid()..for () ... wie .... API ...........
exit function. In der Programmiersprache C ruft die Exit-Funktion alle beim Exit registrierten Funktionen auf und beendet das Programm.
exit(1)bedeutet, dass Programm (Prozess) nicht erfolgreich beendet wird.
Dateipuffer werden geleert, Streams geschlossen und temporäre Dateien gelöscht
exit(0) bedeutet, dass Programm (Prozess) erfolgreich beendet wurde.
EXIT_FAILURE) ist daher nicht ausreichend.