Почему execv выходит из функции?

Вот код unix v6: http://v6shell.org/history/if.c

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

Поэтому, если execv успешно выполнен, мы не достигнем следующей строки и вернемся 1. Вместо execv вернет что-нибудь (0?) И выйдет из функции doex. Но почему?

Я бы хотел, чтобы вы это написали:

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

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

С самого начала страницы руководства exec вы связали:

Exec накладывает вызывающий процесс на именованный файл, а затем переходит к началу основного образа файла. Не может быть возврата из файла ; изображение вызывающего ядра теряется.

Как и в сегодняшних функциях exec , вызов execv полностью заменяет вызывающий процесс на новый. Если execv по какой-то причине не удалось, управление переходит к следующей строке, и функция return 1 . В противном случае код выхода subprocessа будет использоваться как код выхода этого процесса, и дальнейший код этого процесса не будет выполнен.