1. 主页
  2. 文档
  3. C语言教程
  4. C语言函数
  5. exit() vs _Exit()

exit() vs _Exit()

C/C++ 中的exit()_Exit()在功能上非常相似。然而,exit() 和 _Exit() 之间有一个区别,它是exit() 函数在程序终止之前执行一些清理,如连接终止、缓冲区刷新等。

exit()

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

语法:

void exit(int exit_code); // The exit_code is the value which is returned to parent process

例子:

// C program to illustrate exit() function.
#include <stdio.h>
#include <stdlib.h>

// Driver Code
int main(void)
{
printf("START");

exit(0);
// The program is terminated here

// This line is not printed
printf("End of program");
}

输出

START

说明:在上述程序中,首先调用 printf 语句并打印值。之后,调用 exit() 函数并立即退出执行,并且不打印 printf() 中的语句。

_Exit()

C/C++ 中的 _Exit() 函数可以正常终止程序而不执行任何清理任务。例如,它不执​​行用 atexit 注册的函数。

语法: 

void _Exit(int exit_code); // 这里exit_code代表退出
//程序的状态可以是 
// 0 或非零。

返回值: _Exit() 函数不返回任何内容。

// C++ program to demonstrate use of _Exit()
#include <stdio.h>
#include <stdlib.h>

// Driver Code
int main(void)
{
int exit_code = 10;
printf("Termination using _Exit");
_Exit(exit_code);
}

在这里,输出将是空的。

让我们通过一个例子来了解其中的区别在这里,在下面的程序中,我们使用了exit()

// A C++ program to show difference
// between exit() and _Exit()
#include <bits/stdc++.h>
using namespace std;

void fun(void) { cout << "Exiting"; }

// Driver Code
int main()
{
atexit(fun);
exit(10);
}

输出

Exiting

遇到 exit() 后代码立即终止。现在,如果我们将 exit 替换为_Exit(), 

// A C++ program to show difference
// between exit() and _Exit()
#include <bits/stdc++.h>
using namespace std;

void fun(void) { cout << "Exiting"; }

int main()
{
atexit(fun);
_Exit(10);
}

没有输出,也没有打印任何内容。

这篇文章对您有用吗?