c - main() 在运行时异常时返回什么?

标签 c exception program-entry-point

当程序遇到运行时异常(例如段错误)时,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/

相关文章:

c++ - ICU:ucnv_convertEx——即时检测编码错误

c - 为什么指针声明指向未知内存而定义不是?

c - 关于 float 和 float ×整数的溢出题

java - 方法调用可能会产生 java.lang.nullpointerException

java - 选择应加载项目的哪个可运行类

for 循环上的 C 段错误

java - 在构造函数中尝试/捕获错误数量的变量

c# - 在创建对象时在构造函数中抛出异常或预先验证参数?

java - 当我们不传递任何命令行参数时,为什么不会出现错误?

python - 为什么我不能从导入的模块中调用 globals()?