Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: arcadio2r en 19 Diciembre 2012, 17:39 pm



Título: Cerrar programa con funcion exit
Publicado por: arcadio2r en 19 Diciembre 2012, 17:39 pm
Buenas,

tengo una duda con la función "exit" y la liberación de recursos.

¿Hace falta la llamada "exit" para finalizar el programa correctamente y liberar los recursos del proceso, o no hace falta esta instrucción para finalizar liberando los recursos porque el compilador ya la introduce?

Muchas gracias.


Título: Re: Cerrar programa con funcion exit
Publicado por: rir3760 en 19 Diciembre 2012, 17:48 pm
En el lenguaje C para terminar una aplicación desde la función main basta con una sentencia "return N;" ya que en esa función es equivalente a "exit(N);".

Desde cualquier otra función debes utilizar "exit(N);".

Un saludo


Título: Re: Cerrar programa con funcion exit
Publicado por: arcadio2r en 20 Diciembre 2012, 11:08 am
En el lenguaje C para terminar una aplicación desde la función main basta con una sentencia "return N;" ya que en esa función es equivalente a "exit(N);".

Desde cualquier otra función debes utilizar "exit(N);".

Un saludo

Primero de todo, gracias por la respuesta.

La pregunta que hago hace referencia a un "void main". En este caso, el codigo finaliza correctamente con y sin el "exit(x)". ¿Pero sin el exit el compilador liberará los recursos del proceso?


Título: Re: Cerrar programa con funcion exit
Publicado por: naderST en 20 Diciembre 2012, 17:30 pm
El problema de utilizar void main es que el sistema operativo está esperando un valor de retorno de tu programa y no estas retornando nada. Utilizar void main, a pesar de que funciona, no  es lo correcto. En este caso de void main deberías utilizar siempre exit(N) para salir.


Título: Re: Cerrar programa con funcion exit
Publicado por: rir3760 en 20 Diciembre 2012, 17:51 pm
La pregunta que hago hace referencia a un "void main". En este caso, el codigo finaliza correctamente con y sin el "exit(x)". ¿Pero sin el exit el compilador liberará los recursos del proceso?
No se recomienda el uso de "void main()" porque su soporte depende del compilador utilizado y, si se soporta, utilizar "return N;" (en main) o "exit(N);" es un error ya que la definición utilizada no permite retornar un valor. Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

En cuanto a recursos depende a que te refieras. El estándar de C solo indica que en una terminación normal del programa los bufers se vacían, los archivos se cierran y algunos otros detallitos mas (por ejemplo los archivos creados mediante la función tmpfile se eliminan).

Para cualquier otro recurso no hay otra opción que revisar la documentación del compilador.

Un saludo


Título: Re: Cerrar programa con funcion exit
Publicado por: ithory en 22 Diciembre 2012, 13:42 pm
Al final de cada proceso para liberar los recursos hay que usar la llamada al sistema exit();, exit(0) por ejemplo.

Pero solo al final de cada proceso, por ejemplo si creas un proceso con fork();

int valor;
valor=fork();

if(valor == 0) //estamos en el proceso hijo, cuando acabemos de poner el código del hijo haremos un
.....
.....
.....
exit(0)


Título: Re: Cerrar programa con funcion exit
Publicado por: arcadio2r en 23 Diciembre 2012, 13:24 pm
Muchas gracias.  ;-)

Ya me ha quedado claro!

Feliz Navidad y Año Nuevo!