[C con Clase] proyecto de c en unix

Programante programante en gmail.com
Jue Mar 19 18:41:12 CET 2009


dave iban escribió:
> Hola compañeros,
>                               soy nuevo en el tema de preguntar algo
> en ese grupo y os queria hacer una pregunta o por lo menos a ver si
> alguien me pudiera orientar.
>                               tengo que hacer un programa en c que
> ejecute comandos en unix pero con parametros ejecuados dede la linea
> de comandos,
>                               por ejemplo:ejecuto en la consola de
> linux  listar_atributos fichero1 fichero2.El listar_atributos es el
> programa ejecutable que me sacaria por pantalla los atributos de estos
> ficheros,fichero1 y fichero2.Con el comando system ejecuta lo que
> escribo entre comillas, (system("ls -l")), pero no acepta una variable
> de c que es o son los argumentos del programa.-mi idea es hacerlo con
> el comando exec o sus variantes no me aclaro mucho.
> un saludo y espero alguna ayudita si podeis.
>
> david

Para usar system() tienes que crear una cadena adecuada:
char Buffer[1024];
snprintf(Buffer, sizeof(Buffer), "ls -l %s", argv[1]);
system(Buffer);

Claro que en C++ es más sencillo:
#include <string>
....

std::string Cadena;
Cadena = "ls -l ";
Cadena += argv[1];
system(Cadena.c_str());


Usando exec:
execlp("/bin/ls", "ls", "-l", argv[1], NULL);
/*Si el comando exec funciona no se ejecutará nada después*/





Más información sobre la lista de distribución Cconclase