EXIT_FAILURE vs exit(1)?

Wat is het verschil? Welke heeft de voorkeur, of wanneer moet ik ze respectievelijk gebruiken?


Antwoord 1, autoriteit 100%

exit(1)(meestal) geeft een mislukte beëindiging aan. Het gebruik ervan is echter niet-draagbaar. Op OpenVMSgeeft exit(1)bijvoorbeeld daadwerkelijk succes aan.

Alleen EXIT_FAILUREis de standaardwaarde voor het retourneren van mislukte beëindiging, maar 1wordt in veel implementaties voor hetzelfde gebruikt.


Dus om samen te vatten:
Als je perfect draagbare code wilt schrijven,

EXIT_FAILUREvoor het geval van een fout. Terwijl,
U kunt ofwel exit(0)of EXIT_SUCCESSgebruiken voor succes.

Merk op dat EXIT_SUCCESSof 0beide hetzelfde zijn.


Referentie:

C99-standaard: 7.20.4.3 De functie exit
Para 5

Ten slotte wordt de controle teruggegeven aan de hostomgeving. Als de waarde van status zeroof . is
EXIT_SUCCESS, een door de implementatie gedefinieerde vorm van de status succesvolle beëindiging is
teruggekeerd. Als de waarde van status EXIT_FAILUREis, een door de implementatie gedefinieerde vorm
van de status mislukte beëindiging wordt geretourneerd. Anders is de geretourneerde status
implementatie-gedefinieerd.


Antwoord 2, autoriteit 19%

Voor echt draagbare code heeft EXIT_FAILUREde voorkeur. De C-standaard definieert alleen betekenis voor drie waarden: EXIT_FAILURE, 0en EXIT_SUCCESS(met 0en EXIT_SUCCESSin wezen synoniem).

Vanuit praktisch oogpunt accepteren de meestetypische systemen ook andere waarden. Als het geheugen dient, kunt u met Linux elke 8-bits waarde en Windows 16-bits waarden retourneren. Tenzij u oprecht geïnteresseerd bent in het overzetten naar een IBM-mainframe, VMS, enz., is de kans groot dat u niet om de meeste systemen geeft die niet ten minste 8-bits retourwaarden ondersteunen.


Antwoord 3, autoriteit 7%

Gebruik EXIT_FAILURE. Het is een constante die door het hele besturingssysteem wordt gebruikt. De waarde kan iets anders zijn dan 1 en is ook meer beschrijvend in de code.


Antwoord 4

Er zijn conventies voor wat voor soort statuswaarden bepaalde programma’s moeten retourneren. De meest voorkomende conventie is gewoon 0 voor succes en 1 voor mislukking. Programma’s die vergelijkingen uitvoeren, gebruiken een andere conventie: ze gebruiken status 1 om een mismatch aan te geven en status 2 om aan te geven dat ze niet kunnen vergelijken. Je programma moet een bestaande conventie volgen als een bestaande conventie daarvoor zinvol is.

Sommige niet-POSIX-systemen gebruiken verschillende conventies voor de uitgangsstatus
waarden. For greater portabilitykunt u de macro’s EXIT_SUCCESSgebruiken
en EXIT_FAILUREvoor de conventionele statuswaarde voor succes en
respectievelijk falen. Ze worden gedeclareerd in het bestand stdlib.h.


Antwoord 5

Niet alleen VMS heeft zijn eigen regels, ook AmigaDOS definieert een retourcode onder de 5 als oké.

Other episodes