Ejecutar un programa de c++ desde otro programac++

Espero puedas ayudarme de antemano de doy las gracias por tomarte tiempo para leer mi pregunta y ofrecer tu ayuda.
Mi duda es la siguiente, tengo un sistema. Es un proyecto que tiene 4 programas cpp, En el programa principal, se lleva a cabo un ciclo para ejecutarse un cierto numero de veces, pero se me genera un error cuando lo ejecuto un numero alto de veces, creo que tengo algún problema con apuntadores o algo por el estilo.
Ahora que:
Quiero elaborar un programa. Y Que dentro de este programa ejecute automáticamente el programa principal del proyecto .exe(el proyecto lo vamos a llamar proydec. Prj y el programa principal se llama proydec.cpp el cual es el ejecutable proydec.exe).
Para enviar el control del ciclo a este programa y que al terminar cada ejecución se liberen todos los apuntadores y variables del proyecto.
Existe una instrucción o algo así para ejecutar un programa de c++ desde otro de c++
Ojala me haya explicado bien.

1 respuesta

Respuesta
1
Existen varias maneras de llamar a un programa desde otro en C/C++:
* usar la función system(). por ejemplo, si quieres copiar un fichero con otro nombre, no tienes mas que ejecutar system("copy fich1 fich2"); y cuando retorne se habrán copiado los ficheros.
* cuando quieres que la salida de un programa te sea entregada como entrada: la función popen() permite ejecutar un programa y leer en un descriptor de fichero la salida producida por este o escribir en la entrada estandar del programa lo que escribamos en el fichero. Por ejemplo FILE *f = popen("dir", "r"); nos permitirá leer de `f' la salida del comando dir (recuerda que popen() se cierra con pclose())
Existen otros métodos para lanzar un programa y dejarlo en ejecución, mientras el programa actual va haciendo otras cosas. En UNIX, tanto system() como popen() utilizan el conjunto de llamadas al sistema fork() (duplica un proceso); exec() (cambia el ejecutable en el mismo espacio virtual del programa actual); dup() (duplica descriptores de fichero abierto);
Imagino que usas Windows, y allí existen otras funciones para este fin, pero no puedo ayudarte con ellas, ya que mi área de experiencia es en entornos UNIX/Linux.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas