Потеря времени execv () и fork ()

В настоящее время я узнаю оfork() а такжеexecv() и у меня возник вопрос относительно эффективности комбинации.

Мне показали следующий стандартный код:

pid = fork();
if(pid < 0){
    //handle fork error
}
else if (pid == 0){
    execv("son_prog", argv_son);
//do father code

я знаю этоfork() клонирует весь процесс (копирование всей кучи и т. д.) и чтоexecv() заменяет текущее адресное пространство на пространство новой программы. Имея это в виду, не делает ли это очень неэффективным использование этой комбинации? Мы копируем все адресное пространство процесса и затем немедленно перезаписываем его.

Итак, мой вопрос:
Какое преимущество достигается за счет использования этого комбо (вместо какого-либо другого решения), которое заставляет людей все еще использовать это, даже если у нас есть отходы?

Ответы на вопрос(5)

Ваш ответ на вопрос