为什么execv退出函数?

时间:2015-01-04 00:34:27

标签: c exec

这是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

1 个答案:

答案 0 :(得分:4)

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

  

然后,Exec用指定的文件覆盖调用进程   转移到文件核心图像的开头。   文件无法返回;调用核心图像   失去了。

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