exec
Системный вызов, подменяющий содержимое процесса другой программой: процесс тот же, код новый.
Если fork() создаёт новый процесс, то exec() оставляет процесс, но выбрасывает его память, загружает новый исполняемый файл и стартует с его точки входа. PID, открытые файловые дескрипторы и рабочий каталог сохраняются. При успехе вызов никогда не возвращается — возвращаться некуда, прежнего кода больше нет.
Связка fork + exec — способ Unix запускать программы, и разделение сделано намеренно: между двумя вызовами потомок может изменить то, что должно относиться к новой программе, — перенаправить стандартный вывод, задать переменные окружения, сбросить привилегии. Именно это делает шелл, когда вы вводите команду с >.