电子产业一站式赋能平台

PCB联盟网

搜索
查看: 553|回复: 0
收起左侧

exit()、_exit()和_Exit()终止程序运行

[复制链接]

732

主题

732

帖子

3482

积分

四级会员

Rank: 4

积分
3482
发表于 2024-2-22 12:00:00 | 显示全部楼层 |阅读模式

1t44p2ipoq064048027.gif

1t44p2ipoq064048027.gif

点击上方蓝色字体,关注我们
在Linux系统下,你可以使用 exit()、_exit() 和 _Exit() 来终止程序运行,特别是在出现错误或执行失败的情况下。这样可以确保程序在发生严重错误时能够安全地退出。
1
exit() 函数
  • 用法:void exit(int status)。
  • exit() 函数是标准 C 库的一部分,常用于 C 和 C++ 程序中。
  • 当调用时,它执行一系列的清理操作(如调用使用 atexit() 注册的函数),刷新 I/O 缓冲区,然后终止程序。
  • status 参数是一个整数值,返回给调用进程的父进程。
    通常,零状态表示正常终止,而非零状态可能表示错误或异常终止。

    以下例子中,exit(0) 将立即终止程序,不会执行 printf("After exit()
    "); 后的代码。exit(0) 表示正常终止。

  • #include#include
    int main() {    printf("Before exit()
    ");
        // The exit() function performs cleanup actions and terminates the program.    exit(0);
        // The following code will not be executed.    printf("After exit()
    ");
        return 0;}
    2
    _exit() 函数
  • 用法: void _exit(int status)。
  • _exit() 函数是一个系统调用,立即终止调用的进程,而不执行 exit() 所做的清理操作。
  • 它不刷新 I/O 缓冲区,也不关闭打开的文件描述符,并且不调用使用 atexit() 注册的函数。
  • status 参数被返回给父进程。

    与 exit() 不同,_exit(0) 不会执行任何清理动作,而是立即终止程序。与 exit() 不同,_exit() 函数是一个系统调用,不执行标准库的清理操作。

  • #include#include
    int main() {    printf("Before _exit()
    ");
        // The _exit() function immediately terminates the program without cleanup.    _exit(0);
        // The following code will not be executed.    printf("After _exit()
    ");
        return 0;}
    3
    _Exit() 函数
  • 用法: void _Exit(int status)。
  • 与 _exit() 类似,_Exit() 是一个系统调用,它在不执行清理操作的情况下立即终止调用的进程。
  • _Exit() 的行为类似于 _exit(),但其设计与 exit() 具有相同的函数签名。
    它在 POSIX 兼容系统中得到标准化。

    _Exit(0) 与 _exit(0) 类似,都是立即终止程序。在 POSIX 系统中,_Exit() 是标准化的版本。

  • #include#include
    int main() {    printf("Before _Exit()
    ");
        // The _Exit() function immediately terminates the program without cleanup.    _Exit(0);
        // The following code will not be executed.    printf("After _Exit()
    ");
        return 0;}
    总的来说,exit() 是一个更高级别的函数,在终止之前执行各种清理操作,而 _exit() 和 _Exit() 是低级别的函数,立即终止进程而不执行清理操作。_Exit() 是 POSIX 兼容系统中对 _exit() 的标准化版本。

    jbekxejbq2b64048127.png

    jbekxejbq2b64048127.png

    往期推荐详解CAN总线:什么是CAN总线?
    LabVIEW控制Arduino驱动数码管(基础篇—11)
    一文搞懂I2C总线通信
    LabVIEW洗手液包装颜色分类识别
    重复相似代码多,导致单片机程序跑飞

    mzpexty0tqr64048227.gif

    mzpexty0tqr64048227.gif

    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条


    联系客服 关注微信 下载APP 返回顶部 返回列表