Desperdício de tempo de execv () e fork ()

Atualmente estou aprendendo sobrefork() eexecv() e eu tive uma pergunta sobre a eficiência da combinação.

Foi-me mostrado o seguinte código padrão:

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

Eu sei dissofork() clona o processo inteiro (copiando todo o heap, etc) e queexecv() substitui o espaço de endereço atual pelo do novo programa. Com isso em mente, não torna muito ineficiente usar essa combinação? Estamos copiando todo o espaço de endereço de um processo e, em seguida, substituí-lo imediatamente.

Então, minha pergunta:
Qual é a vantagem obtida com o uso desse combo (em vez de outra solução) que faz com que as pessoas ainda o usem, mesmo que tenhamos desperdício?

questionAnswers(5)

yourAnswerToTheQuestion