Zeitverschwendung von execv () und fork ()

Ich lerne gerade überfork() undexecv() und ich hatten eine Frage zur Effizienz der Kombination.

Ich wurde der folgende Standardcode angezeigt:

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

Ich weiß dasfork() klont den gesamten Prozess (Kopieren des gesamten Heap usw.) und dasexecv() ersetzt den aktuellen Adressraum durch den des neuen Programms. Ist es in diesem Sinne nicht sehr ineffizient, diese Kombination zu verwenden? Wir kopieren den gesamten Adressraum eines Prozesses und überschreiben ihn dann sofort.

So meine Frage:
Was ist der Vorteil, der durch die Verwendung dieser Kombination (anstelle einer anderen Lösung) erzielt wird, die die Leute dazu bringt, diese zu verwenden, obwohl wir Verschwendung haben?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage