为什么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 – 手册页: http : //man.cat-v.org/unix-6th/2/exec

从您链接的exec手册页开始:

Exec使用指定文件覆盖调用进程,然后传输到文件核心映像的开头。 文件无法返回 ; 调用的核心图像丢失了。

就像今天的exec函数一样 , execv调用完全用新的调用替换调用进程。 如果execv由于某种原因失败,控制将转到下一行,函数将return 1 。 否则,子进程的退出代码将用作此进程的退出代码,并且不会执行此进程的其他代码。