system(variable) en C linux

Iniciado por soyloqbuskas, 5 Octubre 2012, 21:14 PM

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

soyloqbuskas

¡Buenas a todos!

Sabeis como puedo hacer una linea como esta en C?

system("programa -a param1 -b %s -c param3", intVar);

Gracias, un saludo.
"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw

xiruko

para ejecutar un programa desde un programa en c, tienes que informarte sobre las funciones exec(), execve(), etc.

http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/exec.htm

un saludo!

rir3760

Cita de: soyloqbuskas en  5 Octubre 2012, 21:14 PMSabeis como puedo hacer una linea como esta en C?

system("programa -a param1 -b %s -c param3", intVar);
Deseas construir el comando que pasaras a la función "system" mientras se este ejecutando tu programa, ¿Es así?

Si ese es el caso puedes utilizar la función "sprintf" (prototipo en <stdio.h>), esta es casi idéntica a "printf" con la diferencia que la cadena no se envía a la salida estándar sino que se almacena en el array indicado.

Por ejemplo:
#include <stdio.h>
#include <stdlib.h>

#define LONG_LINEA  256

int main(void)
{
   char cmd[LONG_LINEA];
   int i;
   
   for (i = 0; i < 10; i++){
      sprintf(cmd, "compilador -abc %d.c", i);
      printf("%s\n", cmd);
   }
   
   return EXIT_SUCCESS;
}


Y su salida es:
compilador -abc 0.c
compilador -abc 1.c
compilador -abc 2.c
compilador -abc 3.c
compilador -abc 4.c
compilador -abc 5.c
compilador -abc 6.c
compilador -abc 7.c
compilador -abc 8.c
compilador -abc 9.c


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language