Не работает * в ls при запуске через execpv

Пробую запустить команды ls и cp через execpv.

char* argv[]=
{
    "/usr/bin/ls",
    "-l",
    "/home/chorkov/*",
    nullptr
};
execvp(*argv,argv);

получаю сообщение об ошибке /usr/bin/ls: cannot access '/home/chorkov/*': No such file or directory. Из командной строки - команда работает. При отсутствии звездочки среду аргументов - тоже работает. Аналогично ведет себя cp (выдает ошибку cp: cannot stat '/home/chorkov/*.csv': No such file or directory, при наличии звездочки вместо конкретного файла). Не могу сообразить куда дальше копать...


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Подстановку * делает bash, не сама программа. Вот так сработает:

char *argv[] = {
    "bash",
    "-c",
    "/usr/bin/ls -l /home/chorkov/*",
    nullptr
};
execvp(argv[0], argv);
→ Ссылка