Основные отличия системных вызовов fork и exec в Unix-подобных системах:
- fork() создаёт новый процесс (потомок), который является практически полной копией процесса-родителя, выполняющего этот вызов. ru.wikipedia.org После выполнения fork() получаются два одинаковых процесса — основной и порождённый. www.opennet.ru
- exec() заменяет текущую запущенную программу совершенно новой. tproger.ru При вызове exec операционная система останавливает процесс, загружает новую программу и запускает её на том же месте. tproger.ru Идентификатор процесса (PID) не изменяется, но машинный код, данные, куча и стек процесса заменяются на машинный код новой программы. en.wikipedia.org
Таким образом, fork() создаёт новый процесс, а exec() изменяет пользовательский контекст текущего процесса, не создавая новый процесс. intuit.ru