exit() frente a _Exit() en C/C++

exit() y _Exit() en C/C++ son muy similares en funcionalidad. Sin embargo, hay una diferencia entre exit() y _Exit() y es que la función exit() realiza una limpieza antes de la terminación del programa, como la terminación de la conexión, el vaciado del búfer, etc.

salida()

En C, exit() finaliza el proceso de llamada sin ejecutar el resto del código que se encuentra después de la función exit(). 

Sintaxis:

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

Ejemplo:

C

// 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");
}
Producción

START

Explicación: En el programa anterior, primero se llama a la instrucción printf y se imprime el valor. Después de eso, se llama a la función exit() y sale de la ejecución inmediatamente y no imprime la declaración en printf().

_Salida()

La función _Exit() en C/C++ da la finalización normal de un programa sin realizar ninguna tarea de limpieza. Por ejemplo, no ejecuta funciones registradas con atexit.

Sintaxis: 

void _Exit(int exit_code); // Here the exit_code represent the exit
                           // status of the program which can be 
                           // 0 or non-zero.

Valor devuelto: la función _Exit() no devuelve nada.

CPP

// 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);
}

Aquí, la salida será nada.

Entendamos la diferencia a través de un ejemplo . Aquí, en el siguiente programa, hemos usado exit() ,

CPP

// 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);
}
Producción

Exiting

El código finaliza inmediatamente después de encontrar exit(). Ahora, si reemplazamos exit con _Exit()

CPP

// 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);
}

No hay salida y no se imprime nada.

Este artículo es una contribución de Bishal Kumar Dubey . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *