PDA

Visualizza la versione completa : [C] uso della funzione exit(0)


Kintsugi95
22-01-2016, 23:56
Buonasera forum! Vi chiedo di spiegarmi come funziona la funzione (scusate il gioco di parole eheh) exit(0), dato che con il c sono una principiante... so che exit(0) inserito a fine programma indica EXIT_SUCCESS quindi programma senza errori, mentre exit(1) indica EXIT_FAILURE. Tuttavia il suo funzionamento mi rimane piuttosto oscuro..sopratutto, cosa che sarà forse un dubbio stupido, se è il programmatore stesso a inserire a fine programma exit(0), come fa a sapere che il programma e scritto correttamente? O lo aggiunge solo dopo aver compilato, eseguito e quindi controllato? Grazie in anticipo ?^^

minomic
23-01-2016, 00:21
Ciao,
come dici tu, la exit(0) serve per segnalare che è andato tutto bene, mentre un valore diverso da zero indica uno status diverso (potrebbe essere di errore, anche se non è obbligatorio).
Per quanto riguarda la tua domanda su quando e dove la mette il programmatore, è abbastanza semplice: la exit(0) viene messa al termine della parte di codice che rappresenta una esecuzione "normale" del programma, mentre le altre le potresti trovare, ad esempio, in parti di codice che gestiscono un qualche tipo di errore. Esempio:



if(errore_1)
exit(1);
else if (errore_2)
exit(2);
...
else // e' andato tutto bene
exit(0);



Facci sapere se hai altri dubbi.

Ciao! :ciauz:

Kintsugi95
23-01-2016, 21:11
Quindi il programmatore prima controlla che la porzione di codice funzioni correttamente, e poi in caso affermativo aggiunge exit(0)... allo scopo di segnalare a terzi che il programma funziona?

minomic
23-01-2016, 21:54
No, non ci siamo capiti... Prendi questo programma:



int main() {
// istruzioni varie
// ...

istruzione_che_puo_creare_problemi;

if(tutto_ok)
exit(0);

else
exit(1);
}



Quindi non si mette exit(0) per segnalare che il codice è stato scritto correttamente: tutto il codice che viene rilasciato dovrebbe essere corretto!
Si mette per segnalare al chiamante (che può essere un programma di livello superiore) che l'esecuzione è andata a buon fine.

Altro esempio: supponiamo che io scriva un programma bellissimo che legge il contenuto di un file, fa alcune operazioni e poi termina. Tutto bene, ma cosa succede se il file che devo leggere non esiste? Potevo prevederlo in fase di scrittura del codice? No, quindi metto una gestione per le eccezioni, che sia in grado di affrontare anche questa eventualità, segnalando un errore. Se invece il file c'è, riesco a leggerlo, eccetera, allora tutto andrà per il verso giusto e il programma terminerà con una bella exit(0).

Kintsugi95
23-01-2016, 22:54
Sei un grande :unz: adesso e tutto chiaro, grazie!!!

minomic
23-01-2016, 22:55
Bene, mi fa piacere. Se hai altri dubbi siamo qui.

Loading