• Viernes 3 de Mayo de 2024, 00:01

Autor Tema:  Llamar Otro Programa Y Capturar Mensajes En C++  (Leído 1492 veces)

jpjimenez

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Llamar Otro Programa Y Capturar Mensajes En C++
« en: Martes 10 de Julio de 2007, 19:21 »
0
hola, tengo una terrible duda que no me deja dormir durante hace ya unas semanas, entre otras cosas porque es de vital importancia para la realización de un proyecto en el que estoy enfrascado y por que en si la duda no me deja tranquilo.
Por favor cualquier ayuda la agradecería enormemente.

La cuestion es la siguiente:

tengo un programa en C++ que lo que hace es simplemente imprimir a través del flujo de error un mensaje, este es el código


/*código del ejecutable ejemplo.bin*/

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[]){
   
   fprintf(stderr,"Este es el mensaje de error");
   
   return EXIT_SUCCESS;
}


Sencillo verdad.
Ahora viene la cuestion:

¿Cómo puedo llamar a este programa desde otro en C++ y capturar en alguna variable, o de alguna forma, el mensaje lanzado desde el programa "ejemplo.bin"?

Yo trabajo en Linux.

Por favor cualquier ayuda. Si podrian ilustrar con codigo de ejemplo seria ideal, he tratado de muchísimas maneras y nada. Gracias.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Llamar Otro Programa Y Capturar Mensajes En C++
« Respuesta #1 en: Martes 10 de Julio de 2007, 20:54 »
0
Lo podes hacer con pipes.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

jpjimenez

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Llamar Otro Programa Y Capturar Mensajes En C++
« Respuesta #2 en: Martes 10 de Julio de 2007, 21:06 »
0
Gracias Eternal Idol, pero he probado algunas maneras utilizando pipes, pero al parecer, no capto bien como hacerlo pues no me sale, si sabes alguna forma por favor, ponme algun ejemplo, algo de codigo. gracias

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

canoista

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
    • http://www.todotuyo.net
Re: Llamar Otro Programa Y Capturar Mensajes En C++
« Respuesta #4 en: Sábado 14 de Julio de 2007, 16:18 »
0
Lo primero que tienes que hacer es crear un pipe en el programa principal, con int pfd[2], pipe(pfd). Luego con la función fork crear un hijo del programa para que se bifurque en dos ramas. En el hijo creado con un close cierras el canal 2 (el de errores) y duplicas el pfd[1] (que se crear en el canal 2). Solo te queda llamar al programa ejemplo.bin mediante la funcion execlp o execlv.

Ahora todo lo que se escriba en la salida de errores del programa ejemplo.bin el programa principal lo podra leer desde pfd[0].


Saludos.