¿Cómo puedo llamar con éxito a la función execv?

¿Cómo puedo llamar con éxito a la función execv?

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 execvfunció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 copymatriz 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);
}

información relacionada