exit()、_exit()和_Exit()在C中有什么区别?
我该如何决定使用哪一种?
在巴什,
man 2出口
给了我_EXIT(2)页,而
man 3出口
给出页面出口(3)。
发布于 2010-09-07 10:11:30
exit()在清理后终止。
_exit()在呼叫后立即终止。
如果在调用exit()函数时有一些堆栈损坏,程序可能会因分段故障而关闭,如果使用_exit(),则以快速模式退出程序。
从http://msdn.microsoft.com/en-us/library/6wdz5232.aspx收到的
exit() -执行完整的C库终止过程,终止进程,并使用提供的状态代码退出。
_exit() -执行快速C库终止过程,终止进程,并使用提供的状态代码退出。
_cexit() -执行完整的C库终止过程并返回给调用方,但不终止进程。
_c_exit() -执行快速C库终止过程并返回给调用方,但不终止进程。
发布于 2010-09-07 11:33:57
C99中的规范是exit和_Exit。
两者的不同之处在于,exit还执行可能注册到atexit并关闭流等的处理程序,而_Exit没有调用atexit例程,并且可能或不正确地关闭流。
_exit来自POSIX,具有与_Exit相似的属性,其不同之处在于它能够正确关闭流。
总之,只要您可以使用exit,这是最干净的终止方式。
发布于 2010-09-07 10:38:22
来自人类:
出口:
所有用atexit(3)和on_exit(3)注册的函数都按其注册顺序被调用.所有开放的stdio(3)流都被冲洗和关闭。删除由tmpfile(3)创建的文件。
_exit:
函数_exit()与exit(3)类似,但不调用在atexit(3)或on_exit(3)中注册的任何函数。它是否刷新标准I/O缓冲区并删除使用tmpfile(3)创建的临时文件取决于实现。另一方面,_exit()关闭打开的文件描述符.
https://stackoverflow.com/questions/3657667
复制相似问题