Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: deadLock++ en 02 de Enero de 2003, 02:54:44 PM

Título: Capturar el stdout
Publicado por: deadLock++ en 02 de Enero de 2003, 02:54:44 PM
                                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.                                
Título: Capturar el stdout
Publicado por: BeRSeRKeR en 03 de Enero de 2003, 07:34:53 PM
                                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                                
Título: Capturar el stdout
Publicado por: Xtrai2 en 04 de Enero de 2003, 03:17:13 PM
                                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...                                
Título: Capturar el stdout
Publicado por: deadLock++ en 04 de Enero de 2003, 05:27:17 PM
                                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.                                
Título: Capturar el stdout
Publicado por: MChiz en 04 de Enero de 2003, 10:16:09 PM
                                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!