
Estou tentando fazer um programa que copie o arquivo1 para o arquivo2 da seguinte maneira:
cp -i -p file1 file2
Agora eu chamo minha cópia executável e chamando
copy file1 file2
Ele fará a mesma coisa que o primeiro comando (-i e -p).
Eu consegui fazer isso 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]);
No entanto, quero fazer isso agora comexecv
Eu vi a página de manual das funções exec*
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,
execv
Como é o segundo argumento a favorchar *const argv[]
o que preciso alterar na execv
função para obter o mesmo resultado?
Eu tenho meus principais argumentos de função como os seguintes:
main(int argc,char * argv[])
Responder1
Mude seu copy
array 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);
}