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

时间:2017-07-04 11:17:08

标签: c linux fork ipc execvp

虽然路径“/ home / abhijit / Documents / LINUX / editor /”下有多个文件,但是我没有得到“temp”(应该从编辑器文件夹中复制所有文件)文件夹中的所需输出而输出即将到来错误为:“cp:无法统计'/ home / abhijit / Documents / LINUX / editor / *':没有这样的文件或目录”

#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 };

1 个答案:

答案 0 :(得分:3)

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

如果通过shell运行cp命令,可以通过-c使用exec选项调用shell或使用system来使其工作功能而不是exec