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);
}
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[])
Tags command-line cp c exec arguments