在C和C++中,exit()
和abort()
有什么不同?我试图在出现错误(而不是异常)后结束我的程序。
发布于 2008-12-29 03:29:01
abort
发送SIGABRT
信号。abort
不会返回给调用者。SIGABRT
信号的默认处理程序关闭应用程序。刷新stdio
文件流,然后将其关闭。然而,C++类实例的析构函数不是这样的(这一点不确定--也许结果是未定义的?)。
通过atexit
设置,exit
有自己的回调函数。如果指定了回调函数(或者只指定了一个),则以与其注册顺序相反的顺序调用回调函数(如堆栈),然后程序退出。与abort
一样,exit
不会返回给调用者。刷新stdio
文件流,然后将其关闭。此外,还会调用C++类实例的析构函数。
https://stackoverflow.com/questions/397075
复制相似问题