Risposte:
Qual è la differenza tra exit(0)e exit(1)nel linguaggio C?
exit(0)indica la conclusione del programma con successo ed è completamente portabile, mentre
exit(1)(di solito) indica una terminazione non riuscita. Tuttavia, il suo utilizzo non è portatile.
Si noti che lo standard C definisce EXIT_SUCCESSeEXIT_FAILURE restituisce lo stato di terminazione da un programma C.
0e EXIT_SUCCESSsono i valori specificati dallo standard per indicare la terminazione riuscita, tuttavia, solo EXIT_FAILUREil valore standard per la restituzione della terminazione non riuscita. 1è usato per lo stesso in molte implementazioni però.
Riferimento:
C99 Standard: 7.20.4.3 La exitfunzione
Para 5
Infine, il controllo viene restituito all'ambiente host. Se il valore di status è zero o
EXIT_SUCCESS, viene restituita una forma de fi nita dall'implementazione della terminazione con esito positivo dello stato. Se il valore di status èEXIT_FAILURE, viene restituita una forma definita dall'implementazione della terminazione non riuscita dello stato. Altrimenti lo stato restituito è definito dall'implementazione.
exitè l'ultima delle tue preoccupazioni (diavolo, potrebbe non esserci nemmeno una libreria C disponibile. NIENTE È PORTATILE !!! 111).
exitcon qualsiasi valore dispari denota successo. exit(0)è considerato un caso speciale per motivi di conformità C. Sì, POSIX è uno standard, ma non tutti i sistemi sono conformi ad esso. Se vuoi scrivere codice che presuppone POSIX, sei libero di farlo, ma limita la portabilità del tuo codice.
exit nel linguaggio C prende un numero intero che rappresenta uno stato di uscita.
In genere, uno stato di uscita pari a 0 è considerato un successo o un'uscita intenzionale causata dalla corretta esecuzione del programma.
Uno stato di uscita di 1 è considerato un errore e più comunemente significa che il programma ha dovuto uscire per qualche motivo e non è stato in grado di completare con successo tutto nel normale flusso del programma.
Ecco una risorsa GNU che parla dello stato di uscita.
Come ha affermato @Als, è necessario utilizzare due costanti al posto di 0 e 1.
EXIT_SUCCESS è definito dallo standard come zero.
EXIT_FAILURE non è limitato dallo standard ad essere uno, ma molti sistemi lo implementano come uno.
La differenza è che il valore restituito all'ambiente è 0nel primo caso e 1nel secondo caso:
$ ./prog_with_exit_0
$ echo $?
0
$
e
$ ./prog_with_exit_1
$ echo $?
1
$
Si noti inoltre che il valore delle macro EXIT_SUCCESSe EXIT_FAILUREutilizzato come argomento per la exitfunzione sono definiti dall'implementazione ma di solito sono impostati rispettivamente su 0un numero diverso da zero. (POSIX richiede EXIT_SUCCESSdi essere 0). Quindi di solito exit(0)significa un successo e exit(1)un fallimento.
Una exitchiamata di funzione con un argomento in mainfunction è equivalente all'istruzione returncon lo stesso argomento.
exit è una chiamata di sistema utilizzata per terminare un processo in esecuzione da cui viene chiamata. Il parametro per uscire viene utilizzato per informare il processo genitore sullo stato del processo figlio. Quindi, exit (0) può essere usata (e spesso usata) per indicare l'esecuzione riuscita di un processo e exit (1) per segnalare un errore. link di riferimento
exit(0)comportarsi come return 0in main()funzione, exit(1)comportarsi come return 1. Lo standard è, quella mainfunzione return 0, se il programma è terminato con successo mentre un valore diverso da zero significa che il programma è stato terminato con qualche tipo di errore.
exit (0) equivale a exit (EXIT_SUCCESS).
exit (1) equivale a exit (EXIT_FAILURE).
In caso di fallimento normalmente viene restituito qualsiasi valore positivo per uscire dal processo, che puoi trovare sulla shell usando $ ?.
Valore più di 128 che è causato dalla terminazione per segnale. Quindi, se un comando di shell termina con un segnale, lo stato di ritorno deve essere (128 + numero di segnale).
Per esempio:
Se un comando di shell viene terminato da SIGINT, $? darà 130 (128 + 2) (Qui 2 è il numero di segnale per SIGINT, controlla usando kill -l)
exit () dovrebbe essere sempre chiamata con un valore intero e valori diversi da zero sono usati come codici di errore.
Vedi anche: Uso della funzione exit ()
exit(0) significa che il programma (processo) termina normalmente con successo.
exit(1) significa che il programma (processo) termina normalmente senza successo.
Se vuoi osservare questa cosa devi conoscere la gestione dei segnali e la gestione dei processi in Unix ...
sapere sigaction, watipid()..per () ... tale .... API ...........
exit function. Nel linguaggio di programmazione C, la funzione exit richiama tutte le funzioni registrate con in exit e termina il programma.
exit(1)significa che il programma (processo) termina senza successo.
I buffer dei file vengono svuotati, i flussi vengono chiusi e i file temporanei vengono eliminati
exit(0) significa che il programma (processo) è terminato con successo.
EXIT_FAILURE) è quindi insufficiente.