У меня есть программа на C, которая отображает свою командную строку путем перебора переменной argv
.
#include <stdio.h>
int main(int argc, char *argv[]){
int i = 0;
printf("----------\n");
for(i = 0; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
Я вызывал программу в папке, содержащей большое дерево исходных текстов C ++, например:
./a.out **/*.h
Выход:
zsh: argument list too long: ./a.out
Однако такие программы, как ls
и grep
, работают без проблем при вызове с помощью глобуса **/*.h
в той же папке. Почему zsh
терпит неудачу при вызове моей программы? Как zsh
расширяет подстановочные знаки?
Редактировать: Я использую Zsh на Cygwin.