Почему компилятор отклоняет мой вызов функции execv?

Я пытаюсь выполнить команду cp с двумя параметрами --preserve и --interactive

И в моем коде у меня есть:

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

execv(copy[0],copy);

Но это дает мне эту ошибку

error: invalid conversion from 'const char**' to 'char* const*'   
error: initializing argument 2 of 'int execv(const char*, char* const*)'

Что мне нужно изменить, чтобы это работало?


person Pro    schedule 17.02.2016    source источник
comment
Просто удалите const из первой строки.   -  person kaylum    schedule 17.02.2016
comment
@zgyarmati: присутствие C ++ в названии вашего предложенного дубликата делает его несколько неуместным для вопроса с меткой C.   -  person Jonathan Leffler    schedule 17.02.2016


Ответы (1)


Я считаю, что вы должны декларировать копию как:

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

См .: http://pubs.opengroup.org/onlinepubs/009695399/functions/exec.html

person qZTXsxpHWy7eghT8    schedule 17.02.2016