printf tanto en la ventana de la consola como en el archivo?
Frecuentes
Visto 1,295 veces
0
Tengo muchos programas C++ que se compilan con Visual Studio 2005. En su mayoría son pequeños módulos de servidor que se ejecutan en las ventanas de la consola. De todos modos, el problema con el que me encuentro es que el texto solo se puede mostrar en la ventana de la consola o en un archivo de registro, pero no en ambos. Cada programa tiene una opción de línea de comandos para especificar el archivo de registro. Aquí está la función a la que llamo para redirigir stdout y stderr a un archivo.
void consoleobj::setstdouterr(const stringobj& printstr)
{
#if !defined(_WIN32_WCE)
freopen(printstr.c_str(),"w",stdout);
#ifdef _MSC_VER
::SetStdHandle(STD_ERROR_HANDLE,GetStdHandle(STD_OUTPUT_HANDLE));
#endif
#endif
// make log msgs flush to log file(cout does this(on \n?), printf doesn't)
//now if both redir to same log file, msgs should be in right order
setvbuf(stdout, NULL, _IONBF, 0); //no buffering
setvbuf(stderr, NULL, _IONBF, 0); //no buffering
}//end method setstdouterr
¿Hay alguna forma de configurar las cosas para que stdout y stderr se escriban en ambas la ventana de la consola y un archivo de registro opcional simultáneamente? He visto código que redirige cout o una función contenedora, pero todas nuestras declaraciones de impresión usan printf y preferiría usar una función similar a la de nuestra biblioteca consoleobj para configurar esto si es posible. ¡Gracias!
1 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ visual-studio-2005 io or haz tu propia pregunta.
¿Afecta la regulación de la
dup2()
trabajar bajo Windows? - trojanfoe