Quando un processo termina, esso ritorna un valore di uscita, detto exit status, cioè un valore numerico di un byte. Questo in genere viene utilizzato per stabilire se il suo compito è stato svolto correttamente o meno e si utilizza la convenzione di considerare terminato con successo (successful) un processo che ritorna un exit status uguale a 0, mentre si considera terminato con un errore un processo che ritorna un exit status diverso da 0.
Alla sua terminazione, un proceso ritorna sempre un valore al processo genitore, che può ignorare o meno, ma che comunque dovrebbe attendersi, tramite la chiamata alla funzione di libreria wait(). In caso contrario il processo figlio non ha la conferma che il padre abbia ricevuto il suo valore di ritorno e pertanto il kernel non lo distrugge (ovvero nn rimuove dalla memoria la struttura dati ad esso relativa), ma si limita a considerarlo uno zombie. È compito del processo genitore eliminare le tracce del processo figlio. Inoltre, un proceso che termina potrebbe aver generato dei processi figli. Tali processi vengono “adottati” da init.
Può darsi che la terminazione (anomala) di un processo provochi il core dump33 (scarico della memoria). In pratica si ottiene la creazione di un file nella working directory, contenente l’immagine del processo interrotto. Questi file servono soltanto a documentare un incidente di funzionamento ed a permetterne l’analisi attraverso strumenti diagnostici opportuni (debugger).
[da completare ...]