
Estoy intentando crear un programa que copie el archivo1 en el archivo2 de la siguiente manera:
cp -i -p file1 file2
Ahora llamo a mi copia ejecutable y así llamando
copy file1 file2
Hará lo mismo que el primer comando (-i y -p).
Pude hacer esto usandoexecl
char const *copy[] = {"/bin/cp","cp","-p","-i",0};
execl(copy[0],copy[1],copy[2],copy[3],argv[1],argv[2],copy[4]);
Sin embargo, quiero hacerlo ahora conexecv
Vi la página de manual de funciones ejecutivas*
execl(const char *path, const char *arg, ...);
execv(const char *path, char *const argv[]);
y entonces el primer argumento parece ser el mismo sin embargo,
execv
¿Cómo es el segundo argumento a favor ?char *const argv[]
¿Qué necesito cambiar en la execv
función para obtener el mismo resultado?
Tengo los argumentos de mi función principal como los siguientes:
main(int argc,char * argv[])
Respuesta1
Cambie su copy
matriz y la llamada a la función. El siguiente es un ejemplo mínimo:
#include <unistd.h>
int main(int arcg, char *argv[])
{
char *const args[] = {"cp","-p","-i", argv[1], argv[2], 0};
execv("/bin/cp", args);
}