这是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
答案 0 :(得分:4)
从您链接的exec
手册页开始:
然后,Exec用指定的文件覆盖调用进程 转移到文件核心图像的开头。 文件无法返回;调用核心图像 失去了。
就像在today's exec
functions中一样,execv
调用完全用新的调用替换了调用进程。如果execv
由于某种原因失败,则控件将转到下一行,函数将return 1
。否则,子进程的退出代码将用作此进程的退出代码,并且不会执行此进程的其他代码。