当程序遇到运行时异常(例如段错误)时,C int main()
函数返回什么?
在搜索答案时,我遇到了很多关于 what main()
should return, like this one 的讨论/帖子.
最佳答案
如果程序崩溃,它(main
函数)不会返回。如果一个程序崩溃了,那么操作系统就会杀死这个程序,所以这个程序就不再运行了,包括 main
函数。一个不运行的程序不能自行返回任何东西。什么“返回”到运行环境取决于操作系统,操作系统接管了程序。
无论返回什么,都由操作系统处理。对于 POSIX 系统,进程被信号(如 SIGSEGV
,段错误)杀死,操作系统将返回 128
加上信号编号。这记录在例如this waitpid
reference page (以及其中的链接)。
对于 Windows,它通常被报告为一个神秘的 long 值(通常是值 0x80000000
加上其他标志和数据)。
对于不处理崩溃的较旧或更原始的操作系统,“返回”的值通常是发生崩溃时“返回值”寄存器中或堆栈顶部的值。
关于c - main() 在运行时异常时返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55703377/