小阳同学嵌入式学习日记-终止进程中的exit( )和_exit( )

一、 exit( )和_exit( )的用法

   exit() _exit() 都是用于终止程序的函数,但它们有一些区别。

 exit ( ) :

  • 函数原型
    #include <stdlib.h>
    void exit(int status);
    
  • 功能exit() 函数会正常终止程序,并在终止前执行一些清理工作,例如调用通过 atexit() 注册的函数、关闭文件流等。
  • 参数status 参数表示程序的终止状态,通常用来指示程序执行是否成功。通常,0 表示正常终止,非 0 值表示异常终止。
  • 示例
  •  
    #include <stdlib.h>
    #include <stdio.h>
    
    int main() {
        printf("Before exit()\n");
        exit(0);
        printf("After exit()\n"); // 这行代码不会执行,因为程序已经退出
        return 0;
    }
    

 _exit ( ) :

  • 函数原型
    #include <unistd.h>
    void _exit(int status);
    

  • 功能_exit() 函数会立即终止程序,不进行任何清理工作,也不执行任何缓冲区的刷新操作。
  • 参数status 参数表示程序的终止状态,通常用来指示程序执行是否成功。通常,0 表示正常终止,非 0 值表示异常终止。
  • 示例
  • #include <unistd.h>
    #include <stdio.h>
    
    int main() {
        printf("Before _exit()\n");
        _exit(0);
        printf("After _exit()\n"); // 这行代码不会执行,因为程序已经退出
        return 0;
    }
    

 二、exit( )和_exit( )之间的区别

功能

  • exit(): 用于正常终止程序,并在终止前执行一些清理工作,例如调用通过 atexit() 注册的函数、关闭文件流等。
  • _exit(): 用于立即终止程序,不进行任何清理工作,也不执行任何缓冲区的刷新操作。

所属头文件

  • exit(): <stdlib.h> 头文件中声明。
  • _exit():<unistd.h> 头文件中声明。

参数

  • 两者的参数都是用来表示程序的终止状态,通常用来指示程序执行是否成功。通常,0 表示正常终止,非 0 值表示异常终止。

执行清理工作

  • exit() 函数会执行清理工作,包括调用 atexit() 注册的函数、关闭文件流等。
  • _exit() 函数不执行任何清理工作,直接终止程序。

缓冲区刷新

  • exit() 函数会执行缓冲区的刷新操作,确保所有的输出都已经写入到文件中。
  • _exit() 函数不执行缓冲区的刷新操作,直接终止程序。

总之,exit() 函数用于正常终止程序并执行清理工作,而 _exit() 函数用于立即终止程序,不进行任何清理工作。

三、 exit( )和return之间的区别

exit() return 是用于程序中返回并结束执行的两种不同机制,它们之间有以下区别:

用法

  • exit(): 是一个函数,用于终止整个程序的执行。
  • return: 是关键字,用于函数内部返回值,并结束当前函数的执行

所属环境

  • exit(): 主要用于终止整个程序,通常在 main() 函数中调用。
  • return: 主要用于函数内部,用于返回函数结果。

终止程序

  • exit(): 终止整个程序的执行,包括所有的线程和子进程。
  • return: 只会终止当前函数的执行,不影响其他部分的程序执行。

参数

  • exit(): 可以传入一个整数参数,表示程序的退出状态。
  • return: 可以返回一个值,通常是函数的计算结果。

执行位置

  • exit(): 可以在程序的任何地方调用,但通常在需要终止程序的地方调用。
  • return: 只能在函数内部使用,用于返回函数的结果。

总之exit() 是用于终止整个程序的执行,而 return 是用于函数内部返回值并结束当前函数的执行。在 main() 函数中,可以使用 return 语句来结束程序的执行,但建议使用 exit() 函数来明确表示程序的结束。

四、 exit( )和abort( )之间的区别

功能

  • exit(): 用于正常终止程序,可以执行一些清理工作,如关闭文件流等,然后返回操作系统。
  • abort(): 用于异常终止程序,立即终止程序的执行,不执行任何清理工作,直接返回操作系统。

所属头文件

  • exit(): <stdlib.h> 头文件中声明。
  • abort(): <stdlib.h> 头文件中声明。

执行清理工作

  • exit() 函数可以执行一些清理工作,例如关闭文件流、释放动态分配的内存等,然后返回操作系统。
  • abort() 函数不执行任何清理工作,直接终止程序并返回操作系统。

返回值

  • exit() 函数的返回值可以用来指示程序的终止状态,通常约定 0 表示正常终止,非零值表示异常终止。
  • abort() 函数没有返回值,它会直接终止程序。

缓冲区刷新

  • exit() 函数会执行缓冲区的刷新操作,确保所有的输出都已经写入到文件中。
  • abort() 函数不执行缓冲区的刷新操作,直接终止程序。

总之,exit() 函数用于正常终止程序并执行清理工作,而 abort() 函数用于异常终止程序,直接返回操作系统。

做大做强,再创辉煌!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值