Tengo un controlador de señal registrado en mi programa. Al recibir una señal no deseada (SIGABRT), llamo 'exit (-1)' en el manejador de señal para salir del proceso. Pero como se notó en algunas ocasiones, llama a exit() pero falla al finalizar el proceso.¿Puede la salida() no finalizar el proceso?
El problema se generó de forma aleatoria y sospecho fuertemente de la ejecución de exit().
Puede haber razones o casos en los que la salida() puede no finalizar el proceso.
Gracias.
Ciertamente le aconsejo que busque otra causa del error que una función como 'exit'.Casi siempre, cuando piensas que hay un error en el compilador o en la biblioteca estándar, etc., es tu propio error el que está causando el error. – Shahbaz
@Shahbaz: Mandar no pregunta por un error en la implementación, o sugiere que exista. La pregunta es si 'exit' se especifica para terminar siempre el programa, y la respuesta es no (y especialmente no si se llama desde un manejador de señal). –
¿Por qué no simplemente configura el manejador de SIGABRT para salir()? Cualquier otra cosa que esté haciendo en el controlador de señal, hágalo en una llamada atexit(). –