
Я пытаюсь создать программу, которая будет копировать 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);
}