如何使用exit()、_exit()和_Exit()来终止程序运行呢?

电子说

1.3w人已加入

描述

在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() 的标准化版本。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分