Estoy envolviendo el código C++ existente de un proyecto BSD en nuestro envoltorio personalizado y quiero integrarlo a nuestro código con el menor número de cambios posible. Este código usa fprintf
para imprimir a stderr con el fin de registrar/informar errores.Windows C++: ¿Cómo puedo redireccionar stderr para llamadas a fprintf?
Quiero redireccionar esto a un lugar alternativo dentro del mismo proceso. En Unix he hecho esto con un socketpair y un hilo: un extremo del socket es donde envío stderr (a través de una llamada al dup2
) y el otro extremo se monitorea en un hilo, donde puedo procesar la salida.
Esto no funciona en Windows porque un socket no es lo mismo que un manejador de archivo.
Todos los documentos que he encontrado en la web muestran cómo redirigir el resultado de un proceso secundario, que no es lo que quiero. ¿Cómo puedo redireccionar stderr dentro del mismo proceso para obtener una devolución de llamada de algún tipo cuando se escribe la salida? (y antes de decirlo, lo intenté SetStdHandle
pero no encontré ninguna manera de hacer esto) ...