¿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 terminación exitosa del programa y es completamente portátil, mientras que
exit(1)
(generalmente) indica la terminación no exitosa. Sin embargo, su uso no es portátil.
Tenga en cuenta que el estándar C define EXIT_SUCCESS
y EXIT_FAILURE
devolver el estado de terminación de un programa 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
Sin embargo, se usa para lo mismo en muchas implementaciones.
Referencia:
Estándar C99: 7.20.4.3 La exit
función
Para 5
Finalmente, el control se devuelve al entorno del host. Si el valor del estado es cero o
EXIT_SUCCESS
, se devuelve una forma definida por la implementación de la terminación exitosa del estado. Si el valor de estado esEXIT_FAILURE
, se devuelve 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_FAILURE
) es insuficiente.exit
es la menor de tus preocupaciones (diablos, puede que ni siquiera haya una biblioteca C disponible allí. ¡¡¡NADA ES PORTÁTIL !!! 111).exit
con cualquier valor impar denota éxito.exit(0)
se trata como un caso especial en aras de la conformidad con C. Sí, POSIX es un estándar, pero no todos los sistemas lo cumplen. Si desea escribir código que asume POSIX, puede hacerlo, pero limita la portabilidad de su código.exit
en el lenguaje C toma un número entero que representa un estado de salida.Salir exitoso
Por lo general, un estado de salida de 0 se considera un éxito o una salida intencional causada por la ejecución exitosa del programa.
Falla de salida
Un estado de salida de 1 se considera un error y, por lo general, significa que el programa tuvo que salir por alguna razón y no pudo completar con éxito todo en el flujo normal del programa.
Aquí hay un recurso GNU que habla sobre el estado de salida.
Como ha indicado @Als, 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.fuente
exit(0)
indica que el programa terminó sin errores.exit(1)
indica que hubo un error.Puede utilizar valores distintos
1
para diferenciar entre diferentes tipos de errores.fuente
La diferencia es que el valor devuelto al entorno es
0
en el primer caso y1
en el último caso:y
También tenga en cuenta que el valor de las macros
EXIT_SUCCESS
y elEXIT_FAILURE
uso como argumento para laexit
función están definidos por la implementación, pero generalmente se establecen en respectivamente0
y en un número distinto de cero. (POSIX requiereEXIT_SUCCESS
ser 0). Por lo que generalmenteexit(0)
significa un éxito yexit(1)
un fracaso.Una
exit
llamada a función con un argumento enmain
función es equivalente a la declaraciónreturn
con el mismo argumento.fuente
exit es una llamada al 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 padre sobre el estado del proceso hijo. Por lo tanto, exit (0) se puede usar (y se usa a menudo) para indicar la ejecución exitosa de un proceso y exit (1) para marcar un error. Link de referencia
fuente
exit(0)
comportarse comoreturn 0
enmain()
función,exit(1)
comportarse comoreturn 1
. El estándar es, esamain
funciónreturn 0
, si el programa terminó con éxito mientras que un valor distinto de cero significa que el programa se terminó con algún tipo de error.fuente
exit (0) es equivalente a exit (EXIT_SUCCESS).
exit (1) es equivalente a exit (EXIT_FAILURE).
En caso de falla, normalmente se devuelve cualquier valor positivo para salir del proceso, que puede encontrar en el shell usando $ ?.
Valor superior a 128 que se origina en la terminación por señal. Entonces, 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 SIGINT termina algún comando de shell, entonces $? dará 130 (128 + 2) (Aquí 2 es el número de señal para SIGINT, verifique usando kill -l)
fuente
Cuando el ejecutable termina (sale), devuelve un valor al shell que lo ejecutó.
exit(0)
normalmente indica que todo está bien, mientrasexit(1)
que indica que algo ha ido mal.fuente
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 ()
fuente
exit(0)
significa que el programa (proceso) termina normalmente con éxito.exit(1)
significa que el programa (proceso) termina normalmente sin éxito ..Si quieres observar esto debes saber el manejo de señales y la gestión de procesos en Unix ...
saber sobre
sigaction
,watipid()
.. para () ... tal .... API ...........fuente
exit function
. En el lenguaje de programación C, la función de salida llama a todas las funciones registradas con al salir y finaliza el programa.exit(1)
significa que el programa (proceso) finaliza sin éxito. Los búferes de archivos se vacían, las secuencias se cierran y los archivos temporales se eliminanexit(0)
significa que el programa (proceso) finaliza correctamente.fuente