exec
La llamada al sistema que sustituye el contenido de un proceso por otro programa — mismo proceso, código nuevo.
Donde fork() crea un proceso nuevo, exec() conserva el proceso pero descarta su memoria, carga un ejecutable nuevo y arranca desde su punto de entrada. El PID, los descriptores de archivo abiertos y el directorio de trabajo se mantienen. Si la llamada tiene éxito, nunca regresa — no queda código al que volver.
La combinación fork seguido de exec es la forma que tiene Unix de lanzar programas, y esa separación es deliberada: entre ambas llamadas, el proceso hijo puede cambiar cosas que deben aplicarse al nuevo programa — redirigir la salida estándar, fijar variables de entorno, cambiar de usuario. Es exactamente lo que hace un shell cuando se escribe un comando con >.