如何成功调用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);
}

相关内容