¿Cuál es la diferencia entre exit (0) y exit (1) en C?

¿Alguien me puede decir? ¿Cuál es la diferencia entre exit(0) y exit(1) en lenguaje C?

¿Cuál es la diferencia entre exit(0) y exit(1) en lenguaje C?

exit(0) indica la finalización exitosa del progtwig y es totalmente portátil, aunque
exit(1) (normalmente) indica una terminación sin éxito. Sin embargo, su uso no es portátil.

Tenga en cuenta que el estándar C define EXIT_SUCCESS y EXIT_FAILURE para devolver el estado de terminación de un progtwig C.

0 y EXIT_SUCCESS son los valores especificados por el estándar para indicar una terminación exitosa, sin embargo, solo EXIT_FAILURE es el valor estándar para devolver una terminación sin éxito. 1 embargo, 1 se usa para el mismo en muchas implementaciones.


Referencia:

Estándar C99: 7.20.4.3 La función de exit
Para 5

Finalmente, el control se devuelve al entorno host. Si el valor de estado es cero o EXIT_SUCCESS , se EXIT_SUCCESS una forma definida por la implementación de la terminación exitosa de estado. Si el valor del estado es EXIT_FAILURE , se EXIT_FAILURE una forma definida por la implementación del estado de terminación sin éxito. De lo contrario, el estado devuelto está definido por la implementación.

exit en el lenguaje C toma un entero que representa un estado de salida.

Éxito de salida

Normalmente, un estado de salida de 0 se considera un éxito o una salida intencional causada por la ejecución exitosa del progtwig.

Falla de salida

Un estado de salida de 1 se considera un error, y por lo general significa que el progtwig tuvo que salir por algún motivo y no pudo completar con éxito todo el flujo normal del progtwig.

Aquí hay un recurso de GNU que habla sobre el estado de salida.


Como @Als ha indicado, se deben usar dos constantes en lugar de 0 y 1.

EXIT_SUCCESS está definido por el estándar como cero.

EXIT_FAILURE no está restringido por el estándar a ser uno, pero muchos sistemas lo implementan como uno solo.

exit(0) indica que el progtwig terminó sin errores. exit(1) indica que hubo un error.

Puede utilizar diferentes valores distintos de 1 para diferenciar entre diferentes tipos de errores.

La diferencia es que el valor devuelto al entorno es 0 en el primer caso y 1 en el último caso:

 $ ./prog_with_exit_0 $ echo $? 0 $ 

y

 $ ./prog_with_exit_1 $ echo $? 1 $ 

También tenga en cuenta que los valores de macros EXIT_SUCCESS y EXIT_FAILURE utilizados como argumento para exit función están definidos por la implementación, pero generalmente se establecen en 0 y un número distinto de cero, respectivamente. (POSIX requiere que EXIT_SUCCESS sea ​​0). Por lo general, exit(0) significa un éxito y exit(1) un error.

Una llamada a la función de exit con un argumento en la función main es equivalente a la statement return con el mismo argumento.

exit es una llamada del sistema que se utiliza para finalizar un proceso en ejecución desde el que se llama. El parámetro para salir se utiliza para informar al proceso principal sobre el estado del proceso secundario. Por lo tanto, la salida (0) se puede usar (y se usa a menudo) para indicar la ejecución exitosa de un proceso y la salida (1) para marcar un error. Link de referencia

exit(0) comporta como return 0 en la función main() , exit(1) comporta como return 1 . El estándar es, que la función main return 0 , si el progtwig terminó con éxito mientras que un valor distinto de cero significa que el progtwig terminó con algún tipo de error.

exit (0) es equivalente a exit (EXIT_SUCCESS).

exit (1) es equivalente a exit (EXIT_FAILURE).

En caso de fallo, normalmente se obtiene un valor positivo para salir del proceso, que puede encontrar en el shell utilizando $.

Valor más de 128 que se provoca la terminación por señal. Por lo tanto, si cualquier comando de shell termina con una señal, el estado de retorno debe ser (128 + número de señal).

Por ejemplo:

Si cualquier comando de shell es terminado por SIGINT entonces $? dará 130 (128 + 2) (Aquí 2 es el número de señal de SIGINT, verifique usando kill -l)

Cuando el ejecutable finaliza (sale), devuelve un valor al shell que lo ejecutó. exit(0) generalmente indica que todo está bien, mientras que la exit(1) indica que algo no está bien.

exit () siempre debe llamarse con un valor entero y los valores distintos de cero se utilizan como códigos de error.

Ver también: Uso de la función exit ().

exit(0) significa que el Progtwig (Proceso) termina normalmente con éxito ..

exit(1) significa que el progtwig (proceso) termina normalmente sin éxito ..

Si desea observar esto, debe conocer el manejo de señales y la gestión de procesos en Unix …

saber sobre sigaction , watipid() ..for () … such …. API ………..