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

mea*_*ers 3 c program-entry-point exception

int main()当程序遇到运行时异常(例如,分段错误)时,C 函数返回什么?

在寻找答案时,我遇到了很多关于应该返回什么的main()讨论/帖子,就像这样

Som*_*ude 7

main如果程序崩溃,它(函数)不会返回。如果程序崩溃,则操作系统将终止该程序,因此该程序不再运行,并且包含该main功能。不运行的程序无法自行返回任何内容。返回到运行环境的内容取决于在程序之后接管的操作系统。

返回的所有内容均由操作系统处理。对于POSIX系统,SIGSEGV操作系统将返回一个被信号(如分段错误)杀死的进程,128再加上信号号。例如,在waitpid参考页(及其中的链接)中对此进行了记录。

对于Windows,通常将其报告为神秘的long值(通常是该值0x80000000加上其他标志和数据)。

对于不处理崩溃的较旧或更原始的操作系统,“返回”的值通常是崩溃时在“返回值”寄存器中或堆栈顶部的值。