Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: soyloqbuskas en 5 Octubre 2012, 21:14 pm



Título: system(variable) en C linux
Publicado por: soyloqbuskas en 5 Octubre 2012, 21:14 pm
¡Buenas a todos!

Sabeis como puedo hacer una linea como esta en C?

Código
  1. system("programa -a param1 -b %s -c param3", intVar);

Gracias, un saludo.


Título: Re: system(variable) en C linux
Publicado por: xiruko en 5 Octubre 2012, 23:03 pm
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 (http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/exec.htm)

un saludo!


Título: Re: system(variable) en C linux
Publicado por: rir3760 en 6 Octubre 2012, 01:24 am
Sabeis como puedo hacer una linea como esta en C?

Código
  1. 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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define LONG_LINEA  256
  5.  
  6. int main(void)
  7. {
  8.   char cmd[LONG_LINEA];
  9.   int i;
  10.  
  11.   for (i = 0; i < 10; i++){
  12.      sprintf(cmd, "compilador -abc %d.c", i);
  13.      printf("%s\n", cmd);
  14.   }
  15.  
  16.   return EXIT_SUCCESS;
  17. }

Y su salida es:
Código:
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