c++ - application - ¿Cuándo se prefiere abortar() sobre salir()?
funcion exit en c++ (4)
A veces, su programa se rompe hasta tal punto que su estado se vuelve inconsistente y, por lo tanto, exit()
no funcionará porque causaría la destrucción de objetos globales y este último no funcionaría correctamente cuando el estado es inconsistente. En tales situaciones es preferible abort()
.
Conozco las diferencias entre los dos . Una cosa notable es que abort () envía la señal SIGABRT, por lo que puede ser relevante cuando su software se basa en ellos. Pero para una aplicación típica, exit () parece ser una versión más segura de abort () ...? ¿Hay alguna otra preocupación para usar abort () en lugar de exit ()?
Se prefiere cancelar cuando la aplicación no puede manejar la excepción y no puede entender qué hacer en el escenario. Exit () significa que la aplicación debe terminar todas las tareas con gracia. si se produce una excepción y la aplicación puede manejar la misma llamada, entonces se ejecuta la llamada Exit ().
Use abort()
si su programa está posiblemente en un estado corrupto y considera que es demasiado peligroso tratar de hacer algo más. exit()
hará que se atexit
cualquier función atexit
, y en los destructores C ++ de objetos estáticos. Esto suele ser lo que desea para una salida limpia, pero podría ser catastrófico si, por ejemplo, sobrescriben un archivo con datos corruptos.
El uso de la abort
abortará el núcleo, si el usuario tiene habilitados los volcados del núcleo. Por lo tanto, como regla general, usaría el abort
si no está tan seguro de lo que está mal que la única forma de obtener información útil es analizando un volcado de datos.
Si puede exit
forma segura desde cualquier punto dado, y no necesita el volcado de memoria, entonces la salida es un enfoque más agradable.