Я не понимаю, почему Unix имеет fork()
для создания нового процесса. В Win32 API мы CreateProcess()
, который создает новый процесс и загружает исполняемый файл в его адресное пространство, а затем начинает выполнение из точки входа. Однако Unix предлагает fork для создания нового процесса, и я не понимаю, почему бы мне дублировать мой процесс, если бы я хотел запустить другой процесс.
Итак, позвольте мне задать два вопроса:
- Если
fork()
, а затемexec()
более эффективен, почему нет функцииforkexec(const char *newProc)
, так как мы будем называтьexec()
послеfork()
почти в каждом случае? - Если это не более эффективно, почему существует
fork()
вообще?