Como posso chamar a função execv com sucesso? [fechadas]

1

Estou tentando criar um programa que copie o arquivo1 no arquivo2 da seguinte maneira:

cp -i -p file1 file2

Agora eu chamo minha cópia executável e, assim, chamando

copy file1 file2

Ele fará o mesmo que o primeiro comando (-i e -p).

Consegui fazer isso usando execl

char const *copy[] = {"/bin/cp","cp","-p","-i",0};

execl(copy[0],copy[1],copy[2],copy[3],argv[1],argv[2],copy[4]);

No entanto, quero fazer isso agora com execv

Eu vi a página man do exec * functions

execl(const char *path, const char *arg, ...);

execv(const char *path, char *const argv[]);

e assim o primeiro argumento parece ser o mesmo no entanto,

Como o segundo argumento para execv é char *const argv[]

O que eu preciso mudar na função execv para obter o mesmo resultado?

Eu tenho meus principais argumentos de função como os seguintes:

main(int argc,char * argv[])
    
por alkabary 17.02.2016 / 20:08

1 resposta

2

Altere sua matriz copy e a chamada de função. O seguinte é um exemplo 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);
}
    
por 17.02.2016 / 20:20