一、来源不同
1、头文件
#include <stdlib.h>
void exit(int status);
void _exit(int status);
#incldue <unistd.h>
void _exit(int status);
2、exit() 和 _Exit() 是由 ISO C 说明的,_exit() 是由 POSIX.1 说明的。
二、功能不同
- exit() 除了要退出程序之外,还要执行终止处理程序以及标准IO清理、关闭操作(该输出的输出、该写入文件的写入文件)。
- _exit() 和_Exit() 只执行程序退出操作。

三、拓展
终止处理程序:exit handler,在程序退出之前由 exit() 函数调用。需要调用的函数的原型如下:
void (*func)(void)
由 atexit() 函数注册,头文件:stdlib.h 。
栗子:
#include <iostream>
void showA();
void showB();
void showC();
int main()
{
atexit(showA);
atexit(showB);
atexit(showC);
return 0;
}
void showA() { std::cout << "A"; }
void showB() { std::cout << "B"; }
void showC() { std::cout << "C"; }
结果
CBA
(SAW:Game Over!)
本文详细对比了C/C++中exit(), _exit() 和_Exit() 函数的区别,包括它们的来源、功能差异及拓展应用。exit()不仅退出程序还负责清理资源和执行终止处理程序;而_exit()和_Exit()仅执行程序退出,不进行额外操作。
3185

被折叠的 条评论
为什么被折叠?



