exec
A chamada de sistema que troca o conteúdo de um processo por outro programa — mesmo processo, código novo.
Enquanto o fork() cria um novo processo, o exec() mantém o processo, descarta sua memória, carrega um novo executável e começa pelo ponto de entrada. O PID, os descritores de arquivo abertos e o diretório de trabalho são preservados. Em caso de sucesso, a chamada nunca retorna — não sobrou código para onde voltar.
A combinação fork-depois-exec é o jeito do Unix de iniciar programas, e a separação é proposital: entre as duas chamadas o filho pode mudar coisas que devem valer para o novo programa — redirecionar a saída padrão, definir variáveis de ambiente, abrir mão de privilégios. É exatamente o que um shell faz quando você digita um comando com >.