我必须在C中编写一个shell并且需要处理它中的globing并且我只允许使用函数glob。但是当我尝试使用它时,它只会给我一个结果。
#include <glob.h>
#include <stdlib.h>
int main(int ac, char **av)
{
glob_t s;
unsigned long i = -1;
if (glob(av[1], 0, NULL, &s))
printf("ERROR !\n");
else
while (++i < s.gl_pathc)
printf("%s\n", s.gl_pathv[i]);
return (0);
}
我在一个有两个C文件的文件夹中运行此代码:replace_glob.c和test.c
当我运行此代码时:
$ ./a.out *.c
replace_glob.c
$
我不明白为什么,我真的很感谢你的帮助
答案 0 :(得分:3)
在命令行中
./a.out *.c
shell会扩展glob模式,因此您的程序会看到
{"./a.out", "replace_glob.c", "test.c", NULL}
作为argv
。您需要引用该程序的模式来查看它:
./a.out '*.c'