Qu'advient-il si vous exécutez 'exec ls' dans votre coquille et pourquoi?

La question est dans le titre. Je ne pouvais pas comprendre pourquoi le terminal va s'arrêter immédiatement après " ls " est exécutée. Un shell Linux, c'est comme cela:

1.while (1) {
2. char *cmd = read_command();
3. int child_pid = fork();
4. si (child_pid == 0) {
5. exec(cmd);
6. }else {
7. waitpid(child_pid);
8. }
9.}

Donc, si nous courons 'exec ls" dans le shell, cmd est une chaîne de 'exec ls'. Un processus enfant est fourchue dans la ligne 3. Dans la ligne 5, exec(cmd) remplacera le processus de l'enfant, mais n'affectera pas le processus père. Si le processus père n'est pas affectée, pourquoi le terminal s'arrête alors?

Veuillez me montrer les failles dans mon raisonnement ci-dessus.

Si vous êtes en cours d'exécution bash, type help exec.

OriginalL'auteur zcb | 2013-01-28