Estoy escribiendo una biblioteca multiplataforma compartida (.so
en Linux y .dll
en Windows) usando C. Actualmente cuando hay un error, las funciones de la biblioteca devuelven el código de error adecuado y escriben información de error en el stderr
. Las funciones de biblioteca también emiten información y depuran mensajes al stdout
. Esto funciona bien para clientes basados en consola.Estrategias de manejo de errores en una biblioteca compartida - C
Ahora esta biblioteca tendrá programas de cliente que usan la GUI programada usando C++ & wxWidgets. Me pregunto cuáles serían las mejores prácticas para manejar los errores y notificarlos. ¿Puede una aplicación de interfaz de usuario acceder a los datos que llegan a stdout
y stderr
en todas las plataformas?
Una manera alternativa en la que estaba pensando es en que la función de inicialización de la biblioteca inicializa una estructura que tendrá punteros de función. Todas las funciones de la biblioteca tomarán una instancia de esta estructura y llamarán los punteros a la función. De esta forma, el cliente puede elegir dónde imprimir los mensajes.
Me pregunto ¿cuál sería la forma obvia de resolver esto? Cualquier ayuda sería genial.
una pregunta más. Entonces, en OpenSSL, ¿cómo se borra la cola de errores interna? –
@Appu: hay una función provista para que la aplicación solicite el "próximo error". Esto elimina el error más antiguo de la cola interna y lo devuelve a la aplicación. – caf