Gibt es so etwas wie einen Standardsatz von Rückgabecodes für Anwendungen? Dinge wie die Rückgabe von 0 für Erfolg 1 für Fehler, und dann so weiter?
Ich habe eine Windows Server-Anwendung, die ich einige Rückkehr Fehlercodes hinzufüge und wollte zu Standard-Codes zusätzlich zu den appspezifischen, die ich brauche, zu bleiben.
Es gibt keine Standardsätze mit Exit-Codes, denen Anwendungen entsprechen sollten.
Allerdings gibt es einige gängige wie 0 für den Erfolg, wie Sie erwähnt haben. Abhängig vom verwendeten Betriebssystem und den verwendeten Tools können Sie möglicherweise die Exit-Codes für ähnliche Apps ansehen und nachahmen.
Ich denke, der einzige Standard ist 0 für Erfolg und nicht Null für Fehler. Und das ist mehr eine Konvention als ein Standard.
Vielleicht können Sie einige der Unix-Konventionen übernehmen.
In eine andere Antwort schlug der Benutzer David vor
sysexits.h
enthält eine Liste mit Standard-Exit-Codes. Es scheint auf mindestens 1993 zurückzugehen und einige große Projekte wie Postfix verwenden es, also stelle ich mir vor es ist der Weg zu gehen.Von der OpenBSD Manpage:
Gemäß style (9) ist es nicht sinnvoll, exit (3) mit willkürlichen Werten aufzurufen, um auf eine Fehlerbedingung beim Beenden eines Programms hinzuweisen. Stattdessen sollten die vordefinierten Beendigungscodes von Sysexits verwendet werden, damit der Aufrufer des Prozesses eine grobe Schätzung über die Fehlerklasse erhalten kann, ohne den Quellcode nachzuschlagen.
Dies ist die Liste, wie sie auf einem Debian-System erscheint:
%Vor% In der Datei /usr/include/sysexits.h
finden Sie detailliertere Beschreibungen dieser Fehlercodes.
Der Standardstatuscode lautet EXIT_SUCCESS
und EXIT_FAILURE
, definiert in stdlib.h
. So ziemlich jeder benutzt nur 0 bzw. 1. Einige Software verwendet für verschiedene Fehlertypen einen anderen Code als Null.
Exit-Codes sind weit entfernt vom Standard und werden eher verwendet, damit der Entwickler den entsprechenden Fehler erkennt, der bei der Rückgabe der Anwendung aufgetreten ist. Der Standard von 0 für Erfolg, nicht Null für Fehler ist ein allgemeiner Trend und wird verwendet, da Sie den gesamten Nicht-Null-Bereich für alle möglichen Fehler verwenden können.
Wenn Ihre Anwendung Fehler entsprechend protokolliert, ist es höchstwahrscheinlich nicht notwendig, den Beendigungscode zu verfolgen.
Die einzige wirkliche Konvention ist, dass 0
Erfolg bedeutet und Werte ungleich null (typischerweise 1
) einen Fehler bedeuten. Eine offizielle Referenz hierzu finden Sie beispielsweise in Microsoft C ++ - Dokumenten unter exit
:
Normalerweise legt der Aufrufer den Wert
status
auf 0 fest, um einen normalen Exit anzugeben, oder auf einen anderen Wert, der auf einen Fehler hinweist.
Oder die C # -Dokumente auf Envrionment.Exit
und Environment.ExitCode
, die verschiedentlich angeben:
Verwenden Sie 0 (Null), um anzugeben, dass der Prozess erfolgreich abgeschlossen wurde.
und
Der Standardwert ist 0 (Null), was darauf hinweist, dass der Prozess erfolgreich abgeschlossen wurde.
und
Verwenden Sie eine von Null verschiedene Zahl, um einen Fehler anzuzeigen. In Ihrer Anwendung können Sie eigene Fehlercodes in einer Aufzählung definieren und den entsprechenden Fehlercode basierend auf dem Szenario zurückgeben. Geben Sie beispielsweise den Wert 1 zurück, um anzugeben, dass die erforderliche Datei nicht vorhanden ist, und den Wert 2, um anzugeben, dass die Datei das falsche Format aufweist. Eine Liste der Beendigungscodes, die vom Windows-Betriebssystem verwendet werden, finden Sie unter Systemfehlercodes im Windows-Dokumentation.
Im Gegensatz zu einigen anderen Beantwortern rate ich dringend davon ab, die Systemfehlercodes als Anwendung zu verwenden Exit-Codes. Einige Hinweise zu den Systemfehlercodes :
dir
, dotnet
, oder TAEF . Implementieren Sie, was Sie verwenden werden. Alles andere ist überflüssig.