使用 execvp() 在递归 cp 中未扩展通配符

Wildcard not expanded in recursive cp using execvp()

虽然路径“/home/abhijit/Documents/LINUX/editor/”下有多个文件,但我在 "temp"(应该从编辑器文件夹复制所有文件)文件夹中没有得到所需的输出,而是输出错误如:"cp: cannot stat ‘/home/abhijit/Documents/LINUX/editor/*’: No such file or directory"

#include <stdio.h>
#include <unistd.h>

int main( void )
{
    char* argv1[10] = { "cp", "-rf", "/home/abhijit/Documents/LINUX/editor/*", "/home/abhijit/Documents/LINUX/temp", 0 };
    execvp( argv1[0], argv1 );
}

但是如果我说如下,它工作正常。

 char* argv1[MAX_ARGS] = { "cp", "-rf", "/home/abhijit/Documents/LINUX/editor/", "/home/abhijit/Documents/LINUX/temp", 0 };

星号模式 *shell 而不是 cp 命令本身扩展。

如果你通过 shell 运行 cp 命令,你可以使它工作,或者通过 shell 选项调用 shell exec 或使用 system 函数代替 exec.