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?