exec
L'appel système qui remplace le contenu d'un processus par un autre programme — même processus, nouveau code.
Là où fork() crée un nouveau processus, exec() conserve le processus mais jette sa mémoire, charge un nouvel exécutable et démarre à son point d'entrée. Le PID, les descripteurs de fichiers ouverts et le répertoire de travail sont conservés. En cas de succès, l'appel ne retourne jamais — il ne reste plus de code vers lequel revenir.
Le couple fork puis exec est la façon qu'a Unix de lancer des programmes, et la séparation est voulue : entre les deux appels, le processus fils peut modifier ce qui doit s'appliquer au nouveau programme — rediriger la sortie standard, définir des variables d'environnement, abandonner des privilèges. C'est exactement ce que fait un shell quand on tape une commande contenant >.