使用 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
.
虽然路径“/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
.