📜  C和C++中的exit()与_Exit()

📅  最后修改于: 2021-05-30 10:42:58             🧑  作者: Mango

在C语言中,exit()终止调用过程,而不执行exit()函数之后的其余代码。

例子:-

// C program to illustrate exit() function.
#include 
#include 
int main(void)
{
    printf("START");
  
    exit(0); // The program is terminated here
  
    // This line is not printed
    printf("End of program");
}

输出:

START

现在的问题是,如果我们具有exit()函数,那么为什么C11标准引入了_Exit()?实际上,exit()函数会在程序终止之前执行一些清除操作,例如连接终止,缓冲区刷新等。C / C++中的_Exit()函数可正常终止程序,而无需执行任何清除任务。例如,它不执行向atexit注册的功能。

句法:

// Here the exit_code represent the exit status 
// of the program which can be 0 or non-zero.
// The _Exit() function returns nothing.
void _Exit(int exit_code);
// C++ program to demonstrate use of _Exit()
#include 
#include 
int main(void)
{
    int exit_code = 10;
    printf("Termination using _Exit");
    _Exit(exit_code);
  
}

输出:

通过程序显示差异:

// A C++ program to show difference
// between exit() and _Exit()
#include
using namespace std;
  
void fun(void)
{
   cout << "Exiting";
}
  
int main()
{
   atexit(fun);
   exit(10);
}

输出

Exiting

如果我们将退出替换为_Exit(),则不会打印任何内容。

// A C++ program to show difference
// between exit() and _Exit()
#include
using namespace std;
  
void fun(void)
{
   cout << "Exiting";
}
  
int main()
{
   atexit(fun);
   _Exit(10);
}

输出

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。