Kann mir jemand sagen? Was ist der Unterschied zwischen exit(0)
und exit(1)
in C-Sprache?
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_SUCCESS
und EXIT_FAILURE
zurückgibt.
0
und EXIT_SUCCESS
sind die vom Standard angegebenen Werte, um eine erfolgreiche Beendigung EXIT_FAILURE
anzuzeigen. Dies ist jedoch nur der Standardwert für die Rückgabe einer nicht erfolgreichen Beendigung. 1
wird jedoch in vielen Implementierungen für dasselbe verwendet.
Referenz:
C99 Standard: 7.20.4.3 Die exit
Funktion
Abs. 5
Schließlich wird die Kontrolle an die Hostumgebung zurückgegeben. Wenn der Wert von status Null ist oder
EXIT_SUCCESS
eine 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.
EXIT_FAILURE
) ist daher nicht ausreichend.exit
der geringste Problem ist (Hölle, könnte es nicht einmal sein eine C - Bibliothek zur Verfügung gibt. NICHTS ist tragbar !!! 111).exit
mit 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.Erfolg beenden
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.
Beenden Sie den Fehler
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.quelle
exit(0)
zeigt an, dass das Programm fehlerfrei beendet wurde.exit(1)
zeigt an, dass ein Fehler aufgetreten ist.Sie können andere Werte als verwenden
1
, um zwischen verschiedenen Arten von Fehlern zu unterscheiden.quelle
Der Unterschied besteht darin, dass der an die Umgebung zurückgegebene Wert
0
im ersteren Fall und1
im letzteren Fall ist:und
Beachten Sie auch, dass der Makrowert
EXIT_SUCCESS
undEXIT_FAILURE
der alsexit
Funktionsargument verwendete Wert für die Implementierung definiert sind, jedoch normalerweise auf0
eine Zahl ungleich Null festgelegt sind . (POSIX mussEXIT_SUCCESS
0 sein). Bedeutet also normalerweiseexit(0)
Erfolg undexit(1)
Misserfolg.Ein
exit
Funktionsaufruf mit einem Argument inmain
function entspricht der Anweisungreturn
mit demselben Argument.quelle
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
quelle
exit(0)
benimm dich wiereturn 0
in dermain()
Funktion,exit(1)
benimm dich wie in der Funktionreturn 1
. Der Standard ist, dass diesemain
Funktionreturn 0
, wenn das Programm erfolgreich beendet wurde, während ein Wert ungleich Null bedeutet, dass das Programm mit einem Fehler beendet wurde.quelle
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)
quelle
Wenn die ausführbare Datei endet (beendet wird), gibt sie einen Wert an die Shell zurück, die sie ausgeführt hat.
exit(0)
zeigt normalerweise an, dass allesexit(1)
in Ordnung ist, während anzeigt, dass etwas nicht stimmt.quelle
exit () sollte immer mit einem ganzzahligen Wert aufgerufen werden und Werte ungleich Null werden als Fehlercodes verwendet.
Siehe auch: Verwendung der Funktion exit ()
quelle
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 ...........quelle
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öschtexit(0)
bedeutet, dass Programm (Prozess) erfolgreich beendet wurde.quelle