为什么 execv 退出函数?
Why does execv exit a function?
这是 unix v6 代码:http://v6shell.org/history/if.c
doex(earg) {
...
execv(ncom, nargv, np);
return(1);
}
因此,如果 execv 成功执行,我们将不会到达下一行 return 1。相反,execv 将 return 某些内容(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 overlays the calling process with the named file, then
transfers to the beginning of the core image of the file.
There can be no return from the file; the calling core image
is lost.
就像在 today's exec
functions 中一样,execv
调用完全用一个新进程替换了调用进程。如果 execv
由于某种原因失败,控制将传递到下一行并且函数将 return 1
。否则,子进程的退出代码将用作该进程的退出代码,并且不再执行该进程的代码。
这是 unix v6 代码:http://v6shell.org/history/if.c
doex(earg) {
...
execv(ncom, nargv, np);
return(1);
}
因此,如果 execv 成功执行,我们将不会到达下一行 return 1。相反,execv 将 return 某些内容(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 overlays the calling process with the named file, then transfers to the beginning of the core image of the file. There can be no return from the file; the calling core image is lost.
就像在 today's exec
functions 中一样,execv
调用完全用一个新进程替换了调用进程。如果 execv
由于某种原因失败,控制将传递到下一行并且函数将 return 1
。否则,子进程的退出代码将用作该进程的退出代码,并且不再执行该进程的代码。