Qual è la differenza? Qual è il preferito, o quando dovrei usare ciascuno rispettivamente?EXIT_FAILURE vs exit (1)?
risposta
exit(1)
(in genere) indica interruzione non riuscita. Tuttavia, il suo utilizzo è non portatile. Ad esempio, su OpenVMS, exit(1)
indica effettivamente il successo.
Solo EXIT_FAILURE
è il valore standard per la restituzione della terminazione non riuscita, ma 1
viene utilizzato per lo stesso in molte implementazioni.
Quindi, per riassumere:
Se si vuole scrivere il codice uso perfettamente portatile,
EXIT_FAILURE
per caso il fallimento. Mentre,
È possibile utilizzare sia exit(0)
o EXIT_SUCCESS
per il caso di successo.
Si noti che, EXIT_SUCCESS
o 0
sono entrambi uguali.
Riferimento:
C99 standard: 7.20.4.3 La funzione di exit
Para 5
Infine, il controllo viene restituito all'ambiente host. Se il valore di stato è
zero
oEXIT_SUCCESS
, un modulo definito dall'implementazione della terminazione con esito positivo è restituito. Se il valore di stato èEXIT_FAILURE
, viene restituito un modulo definito dall'implementazione della terminazione non riuscita dello stato. In caso contrario, lo stato restituito è definito dall'implementazione .
Inoltre rende la funzione 'exit' nel codice più descrittiva. –
La risposta afferma: "' EXIT_FAILURE' per il caso non di errore. " Vuoi dire: "EXIT_FAILURE" per il caso di errore? " –
@VilhelmGray: Sì. Ben avvistato. –
Utilizzare EXIT_FAILURE
. È una costante utilizzata in tutto il sistema operativo. Il suo valore potrebbe essere diverso da 1 ed è anche più descrittivo nel codice.
È una costante in tutti i sistemi operativi * multipli *? – Aerovistae
Vedere http://www.gnu.org/software/libc/manual/html_node/Exit-Status.html –
@Aerovistae: 'EXIT_FAILURE' è specificato dallo standard C, ed è stato dal 1989. Sarà disponibile su qualsiasi compilatore C ragionevolmente moderno. Il suo valore è in genere '1', ma sarà sempre il valore corretto che denota l'esecuzione fallita del programma nel sistema operativo corrente. –
Esistono convenzioni per quali tipi di valori di stato devono essere restituiti determinati programmi. La convenzione più comune è semplicemente 0 per il successo e 1 per il fallimento. I programmi che eseguono il confronto utilizzano una convenzione diversa: utilizzano lo stato 1 per indicare una mancata corrispondenza e lo stato 2 indica un'impossibilità di comparazione. Il tuo programma dovrebbe seguire una convenzione esistente se una convenzione esistente ha senso per questo.
Alcuni sistemi non POSIX utilizzano diverse convenzioni per i valori di uscita .
For greater portability
, è possibile utilizzare i macroEXIT_SUCCESS
eEXIT_FAILURE
per il valore di stato convenzionale per il successo e l'errore , rispettivamente. Sono dichiarati nel file stdlib.h.
Per codice veramente portatile, è preferibile EXIT_FAILURE
.Lo standard C definisce solo il significato per tre valori: EXIT_FAILURE
, 0
e EXIT_SUCCESS
(con 0
e EXIT_SUCCESS
in sostanza).
Dal punto di vista pratico, la maggior parte dei sistemi accetta anche altri valori. Se la memoria funziona, Linux ti consente di restituire qualsiasi valore a 8 bit e valori di Windows a 16 bit. A meno che tu non sia sinceramente interessato al porting su mainframe, VMS, ecc. IBM, è probabile che non ti interessi la maggior parte dei sistemi che non supporteranno valori di ritorno di almeno 8 bit.
- 1. quando utilizzare throw/1 vs. exit/1 vs. error/1 in Erlang?
- 2. Differenza tra exit (0) e exit (1) in Python
- 3. exit (0) vs return 0
- 4. Come disattivare "exit status 1" quando si esegue os.Exit (1)
- 5. Error Handler - Exit Sub End Sub vs.
- 6. Supervisord "exit status 1 not expected" in esecuzione script php
- 7. Cosa significa "collect2: error: ld restituito 1 exit status"?
- 8. Count (*) vs Count (1)
- 9. Selenium 1 vs 2
- 10. SwitchToThread vs Sleep (1)
- 11. HashCode vs SHA-1
- 12. come uscire da un processo figlio - _exit() vs. uscita
- 13. Gnuplot exit on window close
- 14. Xcode 4.5 Storyboard 'Exit'
- 15. exit(); morire(); restituisce falso;
- 16. Cosa significa exit (main())
- 17. Exit non funziona correttamente
- 18. C# SHA-1 vs PHP SHA-1 ... Risultati diversi?
- 19. Conversione del tipo JavaScript: (true && 1) vs (true | | 1)
- 20. Tipo di dati di $ 1 vs. coalesce ($ 1)
- 21. Exit while loop in Python
- 22. Perché dovrei usare exit select?
- 23. Grep exit codes in Makefile
- 24. PowerShell Git Codice Hook Exit
- 25. : gt (0) vs: not (: first) vs .slice (1)
- 26. iso-8859-1 vs utf-8 android
- 27. webkit/Chrome history.back (-1) onclick vs href
- 28. MAX vs Top 1 - che è meglio?
- 29. undefined reference to principale - collect2: ld returned 1 exit status di
- 30. Definizioni multiple durante il collegamento. collect2: errore di ld returned 1 exit status di
Domanda molto simile: http://stackoverflow.com/q/8867871/827263 –