Pourquoi execv quitte-t-il une fonction?

Voici le code unix v6: http://v6shell.org/history/if.c

doex(earg) { ... execv(ncom, nargv, np); return(1); } 

Donc, si execv est exécuté avec succès, nous n’atteindrons pas la ligne suivante et retournerons 1. Au lieu de cela, execv renverra quelque chose (0?) Et quittera la fonction doex. Mais pourquoi?

Je voudrais sauf que vous auriez à écrire ceci:

 if ( execv(ncom, nargv, np) ) return (0); return (1); 

unix v6 exec – page de manuel: http://man.cat-v.org/unix-6th/2/exec

Depuis le début de la page de manuel de l’ exec que vous avez liée:

Exec superpose le processus appelant avec le fichier nommé, puis effectue un transfert au début de l’image principale du fichier. Il ne peut y avoir aucun retour du fichier ; l’image du kernel appelant est perdue.

Tout comme dans les fonctions exec , l’appel execv remplace complètement le processus d’appel par un nouveau. Si execv échoue pour une raison quelconque, le contrôle passe à la ligne suivante et la fonction return 1 . Sinon, le code de sortie du sous-processus sera utilisé comme code de sortie de ce processus et aucun autre code de ce processus ne sera exécuté.