Exit (comando)
# Exit (comando)

Il comando exit è una chiamata di sistema usata per terminare l'esecuzione di un processo, quando ci troviamo ad operare in un ambiente multithreading (più flussi di lavoro simultanei). Infatti, lo scopo di questa chiamata di sistema è quello di terminare un thread, liberando le risorse assegnate ed usate dal processo in questione.

## Scenario di utilizzo

Nel sistema operativo Unix e derivati, ogni nuovo processo inizia dopo che la shell ha eseguito la chiamata di sistema: fork. Questa operazione prevede la duplicazione dell'interprete dei comandi, con il risultato di avere due processi identici, almeno all'inizio; uno di questi viene indicato come processo padre, l'altro come processo figlio. Quest'ultimo viene poi specializzato mediante la chiamata di sistema exec, usata per caricare in memoria ed eseguire il programma che aveva scatenato tutta questa procedura. A questo punto si avranno due processi indipendenti l'uno dall'altro, che possono dare vita a due diverse situazioni: il processo padre si mette in attesa che il processo figlio termini, prima di tornare in esecuzione; entrambi vengono eseguiti e poi, quando il processo figlio termina, verrà mandato un messaggio al processo padre (SIGCHLD), per informarlo di questo evento. In entrambi i casi è possibile che venga passato al processo padre, a volte anche al sistema operativo o ad un altro processo, un codice di errore (error code) o stato di uscita (exit status); generalmente, esso è un numero intero (pari o maggiore di 0) a cui si assegna un certo significato.

## Exit

La chiamata di sistema exit viene invocata quando si sta terminando un processo figlio, in modo da: liberare le risorse ad esso assegnate; indicare al processo genitore cosa è avvenuto e quali sono stati i risultati ottenuti dall'esecuzione di quel processo. Tutto ciò deve avere luogo prima che il sistema operativo riprenda il controllo della CPU, con l'obiettivo di assegnarla ad uno dei processi che sono in attesa, all'interno della coda.

