exit函数


#include <stdlib.h>

void exit(int status);

exit库函数将终止当前进程,并返回操作系统。status表示进程的退出码,在stdlib.h头文件中定义了两个宏:

#define EXIT_SUCCESS 0

#define EXIT_FAILURE 1


#include <unistd.h>

void _exit(int status);

exit函数与_exit函数的区别:exit在结束进程前会执行一些清理工作,包括执行各种终止处理程序、关闭所有标准I/O等,然后才进入内核;而_exit调用将直接进入内核,将清理工作交给内核来完成,这样I/O缓存将丢失。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
    printf("this is the first line\n");
    printf("this is the second line");
    exit(0);
}
上述测试程序将打印两行,如果将exit换成_exit,则只打印第一行,第二行被丢失了。


exit和return的最主要区别是:

exit是结束进程,返回OS,return是结束函数,返回调用者那儿;只有main函数调用return时,才会结束进程。事实上,main函数在结束时会隐式的调用exit。


exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程。

#include <stdlib.h>

int atexit (void(*)(void))

atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。一个进程最多可以注册32个终止处理函数,这些处理函数的调用顺序与其注册顺序相反。

#include <stdio.h>
#include <stdlib.h>
  void exit_fn1(void)
  {
  printf("Exit function #1 called\n");
  }
  void exit_fn2(void)
  {
  printf("Exit function #2 called\n");
  }
  int main(void)
  {
  /* post exit function #1 */
  atexit(exit_fn1);
  /* post exit function #2 */
  atexit(exit_fn2);
  return 0;
  }





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值