Почему в Unix есть fork (), но нет CreateProcess ()?

Я не понимаю, почему Unix имеет fork () для создания новый процесс. В Win32 API у нас есть CreateProcess () , который создает новый процесс и загружает исполняемый файл в его адресное пространство, а затем начинает выполнение с точки входа. Однако Unix предлагает форк для создания нового процесса, и я не понимаю, зачем мне дублировать свой процесс, если я хочу запустить другой процесс.

Итак, позвольте мне задать эти два вопроса:

  1. Если fork () , а затем exec () более эффективны, почему нет функции forkexec (const char * newProc) , поскольку мы будем вызывать exec () после fork () почти в каждом случае?
  2. Если это не более эффективно, почему fork () существуют вообще?

12
задан Hayri Uğur Koltuk 7 April 2014 в 10:55
поделиться