新闻  |   论坛  |   博客  |   在线研讨会
总结几个结束程序函数
xinjinlong | 2011-09-05 18:40:46    阅读:4842   发布文章

exit():正常结束程序
void exit(int status)
exit()函数结束程序,返回一个只给操作需要,告知程序的最后状态。在调用exit()函数之后,控制权不会在回来。在结束程序之前,exit()会调用之前使用atexit()注册过的所有函数(调用次序是LIFO),关闭所有已经打开文件,删除使用tempfile()创建的临时文件。
atexit():注册一个当程序结束时会调用的函数
int atexit( void (*func)(void) )
atexit()函数的参数是一个函数指针,指向一个没有参数,并且返回值为void的函数。如果atexit()调用成功,程序在正常结束时会调用此函数指针的函数。如果注册成功,atexit()的返回值为0.
在一个程序中,atexit()最多可以被调用32次。如果使用这种方法注册多个函数,他们被调用的次序是LIFO。
abort():立即结束程序的执行
void abort( void )
abort()通过发出一个SIGABRT信号,终结程序的执行。
如果希望程序“干净”的结束就应该使用exit()函数。abort()没有清空已经打开文件的缓冲区,也没有调用之前使用atexit()所安装的任何清除函数。abort()函数知识把下面的信息写入stderr流中:
Abnormal program termination
_Exit():在没有调用atexit()函数活信号处理器(signal handler)情况下结束程序执行。
void _Exit( int status )
_Exit()函数会正常结束程序,但是不调用之前使用atexit()所安装的任何清除函数,也不调用之前使用signal()所安装的任何信号处理器。_Exit()将一个状态值交给OS,与exit()函数一样。至于_Exit()是否清空程序文件缓冲区,或者删除临时文件,就不是太清除了。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
五湖四海皆朋友
最近文章
浅谈MIPS的MMU(二)
2016-08-16 19:33:41
浅谈MIPS的MMU(一)
2016-05-05 10:55:06
推荐文章
最近访客