为什么C中的exit()函数“永不失败”?

为什么C中的exit()函数“永不失败”?,c,exit,C,Exit,我读的是Head First C,它说exit是唯一一个保证永远不会返回值、永远不会失败的函数 C中还有其他函数不应该返回任何可能的结果吗 为什么退出永远不会失败 C中还有其他函数不应该返回任何可能的结果吗 有点。exec系列execl、execlp、execve等将在成功时用新的可执行文件替换当前进程,因此,在成功时将永远不会返回,或者在失败时返回-1并设置errno 为什么退出永远不会失败 它怎么会失败呢?没有任何东西可以阻止进程退出。阅读退出规范如何?并阅读标准以查找其他功能(如果有)。乍

我读的是Head First C,它说exit是唯一一个保证永远不会返回值、永远不会失败的函数

C中还有其他函数不应该返回任何可能的结果吗

为什么退出永远不会失败

C中还有其他函数不应该返回任何可能的结果吗

有点。exec系列execl、execlp、execve等将在成功时用新的可执行文件替换当前进程,因此,在成功时将永远不会返回,或者在失败时返回-1并设置errno

为什么退出永远不会失败


它怎么会失败呢?没有任何东西可以阻止进程退出。

阅读退出规范如何?并阅读标准以查找其他功能(如果有)。乍一看,有一个abort,它使您的先决条件出错。看起来你应该得到一个更好的学习资源。在C11中,还有_退出和快速退出;他们永远不会回来。可能还有一个线程退出函数也永远不会返回。exec家族在某些情况下可以也将返回。从流程的角度来看,它们总是返回,如果不返回,则流程不再存在。OP询问了一个永远不会返回的函数。@Olaf如果它们在失败时返回-无论是从系统调用还是从系统调用之前的标准库代码返回。成功后,当前进程将不再存在,因此不会返回。请阅读我的编辑。对于调用它们的过程,它们总是返回。如果这一点还不清楚,那就想一想。这成了一个哲学问题但是,它们不会精确地返回——在exec之后,新进程重新开始,而不知道导致exec的调用堆栈。好的,调用进程最终看到它们返回。如果它们不返回,则调用进程不再存在。然而,这不是OP所要求的。问题很明显,我们不是一个列出所有功能的网站。