MinGW使用此代码作为每个程序的开头
static void __attribute__((noreturn)) __mingw_CRTStartup (void)
{
int nRet;
SetUnhandledExceptionFilter (_gnu_exception_handler);
_fpreset ();
_mingw32_init_mainargs ();
_mingw32_init_fmode ();
_pei386_runtime_relocator ();
asm __volatile__ ("andl $-16, %%esp" : : : "%esp");
nRet = main (_argc, _argv, environ);
_cexit ();
ExitProcess (nRet);
}
Linux用于终止所有线程并处理返回值的行ExitProcess(nRet);
的替代方法是什么?在哪里可以找到Linux / OS X gcc运行时的源代码? Linux-GCC / XCode运行时是否终止所有线程?如果没有,它如何处理main的返回值?
答案 0 :(得分:0)
相应的代码,在“glibc”中比上面的MingW代码更复杂(因为它有很多选项,它们都有编译磁贴和运行时选择):
然而,简单的观点是它确实:
result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
exit (result);
是的,exit
将终止所有线程(如果没有别的话,操作系统将在_exit()
中调用退出系统调用时。