Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Llamada al sistema "Exit"

Estas en el tema de Llamada al sistema "Exit" en el foro de C/C++ en Foros del Web. Si a la hora de programar no pongo la llamada al sistema "Exit", ¿la introducirá el compilador directamente para que el proceso finalice correctamente? o ...
  #1 (permalink)  
Antiguo 26/12/2012, 02:59
 
Fecha de Ingreso: diciembre-2012
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Llamada al sistema "Exit"

Si a la hora de programar no pongo la llamada al sistema "Exit", ¿la introducirá el compilador directamente para que el proceso finalice correctamente? o ¿es obligatorio ponerla?
Muchas gracias.
Mar.
  #2 (permalink)  
Antiguo 26/12/2012, 11:49
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Llamada al sistema "Exit"

No indicas si estás programando en C/C++ o no, te respondo suponiendo que trabajas en C.

#include <stdlib.h>
void exit (int status);

No necesitas llamar a exit al finalizar el programa (final de la función main). Esta función se utiliza cuando quieres forzar una salida normal del programa desde un punto que no es el final de main (por ejemplo, como consecuencia de un error que has capturado) y es complicado o imposible volver al final de main para salir normalmente del programa. El parámetro status es el valor a devolver al finalizar el programa.

También tienes una función atexit para registrar una o más funciones que serán llamadas al ejecutarse exit (o al finalizar el programa normalmente, sin llamadas a exit). Estas funciones se ejecutarán en orden inverso a su registro, y serán funciones sin argumentos. Habrá que poner una llamada por cada función a registrar. Esto permite personalizar la finalización del programa.

void atexit (void (*func)(void));

El número de funciones que puedes registrar está limitado. Un valor típico es de 32, pero depende de cada compilador.

Saludos,
  #3 (permalink)  
Antiguo 26/12/2012, 14:12
 
Fecha de Ingreso: diciembre-2012
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Llamada al sistema "Exit"

Muchas gracias, FW190!!
Efectivamente, trabajo en C (importante detalle que había olvidado indicar) y tu información me ha aclarado todas las dudas.
Lo dicho, muchas gracias!!
Mar.
  #4 (permalink)  
Antiguo 26/12/2012, 14:35
 
Fecha de Ingreso: diciembre-2012
Mensajes: 9
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Llamada al sistema "Exit"

Cita:
Iniciado por Fw190 Ver Mensaje
No indicas si estás programando en C/C++ o no, te respondo suponiendo que trabajas en C.

#include <stdlib.h>
void exit (int status);

No necesitas llamar a exit al finalizar el programa (final de la función main). Esta función se utiliza cuando quieres forzar una salida normal del programa desde un punto que no es el final de main (por ejemplo, como consecuencia de un error que has capturado) y es complicado o imposible volver al final de main para salir normalmente del programa. El parámetro status es el valor a devolver al finalizar el programa.

También tienes una función atexit para registrar una o más funciones que serán llamadas al ejecutarse exit (o al finalizar el programa normalmente, sin llamadas a exit). Estas funciones se ejecutarán en orden inverso a su registro, y serán funciones sin argumentos. Habrá que poner una llamada por cada función a registrar. Esto permite personalizar la finalización del programa.

void atexit (void (*func)(void));

El número de funciones que puedes registrar está limitado. Un valor típico es de 32, pero depende de cada compilador.

Saludos,
Una cuestión: Si no utilizo Exit explícitamente, quedarán liberados todos los recursos del proceso?
  #5 (permalink)  
Antiguo 27/12/2012, 11:23
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Llamada al sistema "Exit"

No necesitas utilizar exit explícitamente al final de main. Los recursos que hayas reservado se devolverán al sistema al finalizar (salvo terminación anormal del programa). Si no lo haces explícitamente, se efectúa de forma implícita una llamada a exit al finalizar la función main (final de programa). El empleo de exit es cuando necesitas una salida normal de programa desde un punto que no sea el final de main.
  #6 (permalink)  
Antiguo 30/12/2012, 12:23
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 5 meses
Puntos: 127
Respuesta: Llamada al sistema "Exit"

return 0

retorna el estado del programa, en este caso positivo.

Se retorna en la finalización de la ejecución para indicar al SO que la ejecución finalizó correctamente, así que el programa termina naturalmente al final de main.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: llamada, programa, sistema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:17.