Welche "Standard" -Anwendungs- / Beendigungscodes sollte eine Anwendung unterstützen?

8

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.

    
MikeD 08.10.2009, 16:18
quelle

8 Antworten

2

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.

    
David 08.10.2009, 16:23
quelle
14

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.

    
Douglas Leeder 08.10.2009 16:22
quelle
7

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.

    
gioele 09.06.2014 13:26
quelle
5

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.

    
Laurence Gonsalves 08.10.2009 16:36
quelle
4

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.

    
Will Eddins 08.10.2009 16:26
quelle
0

Es gibt definitiv Standardfehlercodes für Windows.

Vor langer Zeit haben wir negative Fehler für spezifische "benutzerdefinierte" Fehler verwendet, aber ich bezweifle, dass dies eine gute Vorgehensweise ist.

Systemfehlercodes (Windows)

    
Pyro 26.11.2016 20:11
quelle
0

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 :

  • Microsoft empfiehlt nicht, sie als Anwendungsexitcodes überall zu verwenden , und schlagen ausdrücklich vor, dass Sie "eigene Fehlercodes definieren" in der Dokumentation I Zitat oben.
  • Microsoft verwendet sie nicht konsistent als Exit-Codes in ihren eigenen Anwendungen oder Befehlen. Zwar gibt es einige Beispiele für Anwendungen, die tun verwenden diese Codes, wie MsiExec.exe , es gibt viel mehr, die nicht, wie dir , dotnet , oder TAEF .
  • Die Verwendung scheint mir eine offensichtlich schlechte Idee zu sein. Es gibt Tausende von System-Exit-Codes , von denen die meisten für Ihre spezielle Anwendung irrelevant sind. Wenn Sie versuchen, sie zu verwenden, verschwenden Sie keine Zeit mehr, um die Codes für Ihr Szenario zu finden, und das Endergebnis ist für einen Entwickler, der Ihre Anwendung aufruft, weniger nützlich als wenn Sie gerade eine kleine Zahl definiert hätten von Exit-Codes, die für Ihre spezielle Anwendung sinnvoll sind - tun Sie das stattdessen.
Mark Amery 16.12.2017 19:51
quelle
-2

Implementieren Sie, was Sie verwenden werden. Alles andere ist überflüssig.

    
Stephane Grenier 08.10.2009 17:18
quelle

Tags und Links