¿Capturar los datos de salida por pantalla del CMD en C/C++?

Iniciado por invisible_hack, 11 Mayo 2010, 22:14 PM

0 Miembros y 1 Visitante están viendo este tema.

invisible_hack

Hola  :D

Hacía ya bastante que no posteaba una duda aqui, y hoy ha tocado  :P

Pues veréis, os pongo en situación...

Todos sabemos que con system() se pueden ejecutar comandos del DOS en C/C++

Pero yo lo que busco es, no ejecutar comandos del DOS, sino capturar la respuesta que da el CMD a esos comandos...

Me explico...

Si abrimos el CMD y escribimos directamente

"hola"

Al darle a Intro, nos devolverá un mensaje diciendo que "hola no se reconoce como comando bla bla bla..."

Pues eso es lo que yo quisiera que mi programa capturase y devolviese...

Es decir, la respuesta que nos da el CMD cuando ejecutamos algún comando, ya sea válido o inválido.

He probado a capturarlo con cin, pero que va, pienso que tendría que ser alguna movida tipo redirigir todas las respuestas que de la CMD a mi programa...

La verdad es que estoy con C++, pero si alguien sabe en C pues tampoco me importaría, intentaría luego acomodarlo a C++ que seguro no sería dificil pasarlo.

¿Alguien me podría dar una idea de lo que podría hacer para conseguirlo?

Gracias  ;D
"Si no visitas mi blog, Chuck te dará una patada giratoria"

Littlehorse

Hay varias formas, podes pasarle a la consola algo como esto (Windows): comando > archivo.txt  2>&1 y luego leer el archivo, obviamente no es la mejor forma pero seguramente sea la mas sencilla.
Ahora, para hacerlo bien primero tienes que especificar sobre que sistema ya que es importante saberlo, pero a grandes rasgos, con buscar sobre pipes ya lo tienes listo.

Tal vez te sirva esto u esto.
Si te fijas por ahí hay sources para descargar. en google seguro hay algunos mas.

Cualquier cosa ya sabes.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

invisible_hack

En primer lugar, lo siento por tardar tanto en contestar  :-\

En segundo lugar, muchas gracias horse, tú como siempre ahí al pie del cañón resolviendo dudas  ;)

A ver si algún dia puedo echarte yo una mano  :xD

Y pues lo he estado mirando, esos enlaces, pero creo que el tema de los threads me queda un poquito grande aún, dejaré el proyecto aparcado momentaneamente, pero ese par de links se van directos a los marcadores  ;)
"Si no visitas mi blog, Chuck te dará una patada giratoria"

Riki_89D

Para eso abria que recurri a las API CreatePipe,etc etc,abria que crear una tuberia,yo creo que seria le mejor forma!


un saludo

[Zero]

E0N dejó un buen source en su blog que seguro te sirve para lo que quieres hacer:

http://e0n-productions.blogspot.com/2009/07/funciones-para-crear-una-remote-shell.html

Ahí crea pipes para redirigir la entrada y salida a su app.

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche