program funcion error end c return exit

funcion - c exit error



¿Diferencia entre retorno 1, retorno 0, retorno-1 y salir? (6)

Como se explica here , en el contexto de main return y exit hacen lo mismo.

P: ¿Por qué necesitamos return o exit ?

A: Para indicar estado de ejecución.

En su ejemplo, incluso si no tuviera declaraciones de retorno o salida, el código funcionaría bien (Suponiendo que todo lo demás sea sintáctico, etc., también correcto. Además, si (y debería serlo) devoluciones main , debe return 0 al final) .

Pero, después de la ejecución, no tiene una manera de averiguar si su código funcionó como se esperaba. Puede usar el código de retorno del programa (en entornos * nix, usando $? ) Que le da el código (según lo establecido por exit o return ). Como usted mismo estableció estos códigos, comprende en qué punto llegó el código antes de terminar.

Puede escribir return 123 donde 123 indica éxito en las comprobaciones posteriores a la ejecución.

Por lo general, en * nix los entornos 0 se toman como códigos de éxito y los códigos que no son cero como fallas.

Por ejemplo, considere el siguiente código:

int main(int argc,char *argv[]) { int *p,*q; p = (int *)malloc(sizeof(int)*10); q = (int *)malloc(sizeof(int)*10); if (p == 0) { printf("ERROR: Out of memory/n"); return 1; } if (q == 0) { printf("ERROR: Out of memory/n"); exit(0); } return 0; }

¿Qué hace el return 0 , el return 1 , la exit(0) en el programa anterior? exit(0) saldrá del programa total y el control saldrá del bucle, pero lo que suceda en el caso de la return 0 , la return 1 , la return -1 .


Para indicar estado de ejecución.

estado 0 significa que el programa tuvo éxito.

estado diferente de 0 significa que el programa salió debido a un error o anomalía.

devuelve n; desde su función de entrada principal finalizará su proceso e informará al proceso principal (el que ejecutó su proceso) el resultado de su proceso. 0 significa ÉXITO. Otros códigos suelen indicar un fallo y su significado.


return n de main es equivalente a exit(n) .

Lo válido devuelto es el resto de su programa. Su significado depende del sistema operativo. En Unix, 0 significa terminación normal y no cero indica que la forma de error obligó a su programa a finalizar sin cumplir con el propósito previsto.

Es inusual que su ejemplo devuelva 0 (terminación normal) cuando parece haberse quedado sin memoria.


return n desde su función de entrada principal terminará su proceso e informará al proceso principal (el que ejecutó su proceso) el resultado de su proceso. 0 significa ÉXITO. Otros códigos suelen indicar un fallo y su significado.


return de main() es equivalente a exit

el programa termina la ejecución inmediata con el estado de salida establecido como el valor pasado para return o exit

return en una función interna (no main ) terminará inmediatamente la ejecución de la función específica devolviendo el resultado dado a la función de llamada.

exit desde cualquier lugar en su código terminará la ejecución del programa inmediatamente.

estado 0 significa que el programa tuvo éxito.

estado diferente de 0 significa que el programa salió debido a un error o anomalía.

Si sale con un estado diferente de 0, se supone que debe imprimir un mensaje de error a stderr por lo que, en lugar de utilizar printf mejor utilizar algo como

if(errorOccurred) { fprintf(stderr, "meaningful message here/n"); return -1; }

tenga en cuenta que (dependiendo del sistema operativo en el que se encuentre) hay algunas convenciones sobre los códigos de retorno.

Busque "códigos de estado de salida" o similar en Google y encontrará mucha información sobre SO y otros sitios.

Vale la pena mencionar que el propio sistema operativo puede terminar su programa con códigos de estado de salida específicos si intenta realizar algunas operaciones no válidas, como leer la memoria a la que no tiene acceso.


return en la función devolver la ejecución al llamante y exit de la función termina el programa.

en la función main , el return 0 o la exit(0) son iguales, pero si escribe exit(0) en una función diferente, el programa saldrá de esa posición.

devolver valores diferentes como return 1 o return -1 significa que el programa está devolviendo un error.

Cuando se usa exit(0) para salir del programa, no se llama a los destructores para objetos no estáticos de ámbito local. Pero se llama a los destructores si se usa el retorno 0.