Как мне успешно вызвать функцию execv?

Как мне успешно вызвать функцию execv?

Я пытаюсь создать программу, которая будет копировать file1 в file2 следующим образом:

cp -i -p file1 file2

Теперь я вызываю свою исполняемую копию и таким образом вызывая

copy file1 file2

Она сделает то же самое, что и первая команда (-i и -p).

Я смог сделать это с помощью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]);

Однако я хочу сделать это сейчас сexecv

Я видел страницу руководства по функциям exec*

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

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

и поэтому первый аргумент, похоже, тот же самый, однако,

Как второй аргумент за execvэтоchar *const argv[]

что мне нужно изменить в execvфункции, чтобы получить тот же результат?

У меня есть следующие основные аргументы функции:

main(int argc,char * argv[])

решение1

Измените свой copyмассив и вызов функции. Ниже приведен минимальный пример:

#include <unistd.h>

int main(int arcg, char *argv[])
{
    char *const args[] = {"cp","-p","-i", argv[1], argv[2], 0}; 
    execv("/bin/cp", args);
}

Связанный контент