C中的 exit() , _exit() 和 _Exit() 有什么区别?
我该如何决定使用哪个?
在bash,
男子2退出
给了我页面_EXIT(2),而
男子3退出
给了页面EXIT(3) .
exit() 清理后终止 .
exit()
_exit() 在通话结束后立即终止 .
_exit()
如果在调用 exit() 函数时有一些堆栈损坏,程序可能会关闭分段错误,如果您使用 _exit() ,则程序在快速模式下退出 .
从http://msdn.microsoft.com/en-us/library/6wdz5232.aspx你有
exit() - 执行完整的C库终止过程,终止进程,并使用提供的状态代码退出 .
_exit() - 执行快速C库终止过程,终止过程,并使用提供的状态代码退出 .
_cexit() - 执行完整的C库终止过程并返回给调用者,但不终止该过程 .
_cexit()
_c_exit() - 执行快速C库终止过程并返回给调用者,但不终止该过程 .
_c_exit()
C99中的规范是 exit 和 _Exit .
exit
_Exit
两者之间的区别在于 exit 还执行可能使用 atexit 注册的处理程序并关闭流等,而 _Exit 不会调用 atexit 例程,可能会也可能不会正确关闭流 .
atexit
_exit 来自POSIX,具有与 _Exit 类似的属性,不同之处在于可以保证正确关闭流 .
_exit
总之,只要你能使用 exit ,这就是最简洁的终止方法 .
来自男人:
exit:以atexit(3)和on_exit(3)注册的所有函数按照注册的相反顺序调用...所有打开的stdio(3)流都被刷新并关闭 . 删除由tmpfile(3)创建的文件 . _exit:函数_exit()类似于exit(3),但不调用使用atexit(3)或on_exit(3)注册的任何函数 . 它是否刷新标准I / O缓冲区并删除使用tmpfile(3)创建的临时文件是依赖于实现的 . 另一方面,_exit()会关闭打开的文件描述符......
1.exit():它清理像关闭文件描述符,文件流等工作,2._exit():它不是清理工作,如关闭文件描述符,文件流等等
这些是exit()和_exit()的主要区别 .
我纠正了你的回答
4 回答
exit()
清理后终止 ._exit()
在通话结束后立即终止 .如果在调用
exit()
函数时有一些堆栈损坏,程序可能会关闭分段错误,如果您使用_exit()
,则程序在快速模式下退出 .从http://msdn.microsoft.com/en-us/library/6wdz5232.aspx你有
exit()
- 执行完整的C库终止过程,终止进程,并使用提供的状态代码退出 ._exit()
- 执行快速C库终止过程,终止过程,并使用提供的状态代码退出 ._cexit()
- 执行完整的C库终止过程并返回给调用者,但不终止该过程 ._c_exit()
- 执行快速C库终止过程并返回给调用者,但不终止该过程 .C99中的规范是
exit
和_Exit
.两者之间的区别在于
exit
还执行可能使用atexit
注册的处理程序并关闭流等,而_Exit
不会调用atexit
例程,可能会也可能不会正确关闭流 ._exit
来自POSIX,具有与_Exit
类似的属性,不同之处在于可以保证正确关闭流 .总之,只要你能使用
exit
,这就是最简洁的终止方法 .来自男人:
1.exit():它清理像关闭文件描述符,文件流等工作,2._exit():它不是清理工作,如关闭文件描述符,文件流等等
这些是exit()和_exit()的主要区别 .
我纠正了你的回答