Unix 为什么execve()不会在成功后返回?

Unix 为什么execve()不会在成功后返回?,unix,execve,Unix,Execve,我已经看过手册了 我从这个链接中了解到的是 对execve的成功调用没有返回值,因为新进程映像覆盖了调用进程映像 我不太清楚为什么会发生这种情况?如果新进程覆盖了调用进程,为什么它只在失败时返回而不在成功时返回?因为如果它无法完成它试图做的事情,即用新进程替换进程,那么返回并通知调用方它失败是有意义的 如果成功,那么调用execve()的代码将不再存在,它已被该函数的成功执行所取代,因此显然它无法再执行任何操作。返回就是这样一件事。因为execve实际上是用新程序替换当前程序。如果调用程序不再存

我已经看过手册了

我从这个链接中了解到的是
对execve的成功调用没有返回值,因为新进程映像覆盖了调用进程映像


我不太清楚为什么会发生这种情况?如果新进程覆盖了调用进程,为什么它只在失败时返回而不在成功时返回?

因为如果它无法完成它试图做的事情,即用新进程替换进程,那么返回并通知调用方它失败是有意义的


如果成功,那么调用
execve()
的代码将不再存在,它已被该函数的成功执行所取代,因此显然它无法再执行任何操作。返回就是这样一件事。

因为
execve
实际上是用新程序替换当前程序。如果调用程序不再存在,它如何以及在何处返回?我明白了,那么如果在执行新进程时发生错误,它如何处理该场景?此时,execve()已成功启动新进程,但现在它在启动后的某个时间遇到了错误。@AgnivaDeSarker如果新进程失败,则这与
execve()
无关。它的执行是二进制的:如果成功,它将用新代码替换调用进程的代码。这意味着
execve()
调用本身不再存在。如果失败,它将返回,以便应用程序能够处理错误。