C/Visual C - Crear codigo ejecutable desde un programa en C.

 
Vista:

Crear codigo ejecutable desde un programa en C.

Publicado por wdiluve (31 intervenciones) el 11/09/2004 15:35:02
Hola y de antemano gracias.

Utilizo, Fedora Core2, gcc 3.3

Bueno, La pregunta consiste en lo siguiene es posible desde un programa realizado en C, y que ya esta en ejecucion crear nuevo codigo y que este se pueda ejecutar desde el programa en ejecucion; si esto es posible me seria de gran ayuda un manual o jemplos de como hacerlo.

Ejemplo.

fichero principal.c

fun1()
{
printf("escribiendo el codigo de la nueva funcion");

/*En esta parte irian las instrucciones necesarias para crear el codigo de la nueva funcion, la cual se llamaria fun2, luego debo poder ejecutar fun2*
}

main()
{
fun1();
}

Descripcion del ejemplo:

1- dentro del fichero principal.c solo esta el codigo correspondiente al main y a fun1.
2- desde fun1 necesito crear el codigo correspondiente a fun2 y poder ejecutar este.
3- fun2 debe ser una funcion.

fun2()
{
printf("El codigo correspondiente a fun2 no existe en el fichero principal.c debe construirce una vez ejecuta el ejecutable correspondiente");
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear codigo ejecutable desde un programa en C.

Publicado por chuidiang (677 intervenciones) el 13/09/2004 09:57:12
Es un poco liado lo que quieres. No estaría de más que dijeras para qué lo quieres, quizás veamos otra solución más simple.

Lo que quieres hacer podrías hacerlo asi.

Generas el codigo que quieras en un fichero .c, es decir, abres el NuevoFichero.c con fopen, escribes en el el codigo con fprintf(). Debes escribir un main().

Luego lo compilas. Utiliza la llamada a system() para compilarlo

system ("gcc NuevoFichero.c -o NuevoFichero");

Luego puedes ejecutarlo con system ("./NuevoFichero"). Si necesitas pasarle parametros a ese nuevo ejecutable y recoger resultados, haz que el main() tenga parametros argc y argv para pasarselo y abrelo con popen() en vez de system(). Podrás leer lo que escriba el programa con printf desde tu ejecutable principal.

FILE *ejecutable = popen ("./NuevoFichero parametros");
char resultado[100];
fscanf (ejecutable, "%s", resultado);

Tienes un ejemplo de esto ultimo en http://www.geocities.com/chuidiang/funciones/funciones.html#popen

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar