退出C中的function
C中的exit() ,_ exit( )和_Exit()有什么区别?
我该如何决定使用哪个?
在bash上,
男子2出口
给了我页面_EXIT(2),而
男子3出口
给了页面EXIT(3)。
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
,这就是最简洁的终止方法。
来自男人:
出口:
用atexit(3)和on_exit(3)注册的所有函数都按照与注册相反的顺序调用…所有打开的stdio(3)流都被刷新并关闭。 删除tmpfile(3)创建的文件。_出口:
函数_exit()类似于exit(3),但不调用使用atexit(3)或on_exit(3)注册的任何函数。 是否刷新标准I / O缓冲区并删除使用tmpfile(3)创建的临时文件是依赖于实现的。 另一方面,_exit()会关闭打开的文件描述符……
1.exit():它清理像关闭文件描述符,文件流等工作,2._exit():它不能清理像关闭文件描述符,文件流等工作
这些是exit()和_exit()的主要区别。
我纠正了你的回答