Debo utilizar una librería (no poseo los fuentes) donde una de sus funciones arroja un texto al stdout (supongo que hará un printf o un cout).
El tema es ¿como puedo capturar ese texto? ¿Es posible redireccionar el stdout a un stream definido por mí?
Muchas gracias.
No sé si esto hará lo que quieres pero tal vez te dé pistas de cómo hacerlo
http://www.beginthread.com/Article/dev.nul...nsole%20Output/Saludos
SDL(almenos en windows) lo hcae, y redirecciona stdout a stdout.txt y stderr a stderr.txt. Podrias mirar el src, aunq supongo q como se trata de un fichero hara... no se q hara, pero podrias probar a fclose(stdout); y stdout = fopen("stdout.txt", "w"); pero no se si te dejara...
Agradezco mucho sus contestaciones.
Redireccionar el stdout o el stderr a un archivo se hace del siguiente modo:
FILE * stream = freopen( "stdout.out", "w", stdout );
El tema es poder redireccionarlo a un flujo mío (sin utilizar archivos). El ejemplo que envió BeRSeRKeR es excelente, lástima que permite hacer esto sólo en procesos hijos de la aplicación que redirecciona el stdout. Concretamente se utiliza la función SetStdHandle para cambiar el HANDLE del flujo, sin embargo el proceso actual no relee esta HANDLE, sólo se hace cuando se inicia un proceso y es por esto que recién sirve cuando crear un proceso hijo.
Me dieron información valiosa, muchas gracias por vuestra ayuda.
Hola!
Creo que los Pipes es lo que buscas. Yo lo tuve que utilizar una vez, y es un engorro. Depende en que Windows se ejecute funciona bien o no. En las MSDN hay informacion sobre todo esto.
Siento no tener nada para poder enseñarte, lo siento : (
Un saludo, espero que te sirva!