exec
La chiamata di sistema che sostituisce il contenuto di un processo con un altro programma — stesso processo, codice nuovo.
Mentre fork() crea un nuovo processo, exec() mantiene il processo ma ne scarta la memoria, carica un nuovo eseguibile e riparte dal suo punto d'ingresso. PID, file descriptor aperti e directory di lavoro vengono ereditati. In caso di successo la chiamata non ritorna mai: non esiste più codice a cui tornare.
La combinazione fork + exec è il modo in cui Unix avvia i programmi, e la separazione è voluta: tra le due chiamate il figlio può modificare ciò che deve valere per il nuovo programma — reindirizzare lo standard output, impostare variabili d'ambiente, rinunciare ai privilegi. È esattamente ciò che fa una shell quando si digita un comando contenente >.