exit()、_Exit() 和 _exit() 函数的区别和联系

本文详细对比了C/C++中exit(), _exit() 和_Exit() 函数的区别,包括它们的来源、功能差异及拓展应用。exit()不仅退出程序还负责清理资源和执行终止处理程序;而_exit()和_Exit()仅执行程序退出,不进行额外操作。

一、来源不同

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 说明的。

二、功能不同

  1. exit() 除了要退出程序之外,还要执行终止处理程序以及标准IO清理、关闭操作(该输出的输出、该写入文件的写入文件)。
  2. _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!)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值