execvp ls: невозможно получить доступ '': нет такого файла или каталога - PullRequest
0 голосов
/ 27 октября 2018

Когда я пытаюсь выполнить команду типа ls без аргументов с execvp, я получаю сообщение об ошибке: ls: невозможно получить доступ '': Нет такого файла или каталога.

Я не знаю почему, потому что это выглядит какон ищет параметр ''.

Код работает так:

int main(int argc, char *argv[])
{
    char command[250] = "ls";              
    argvs[0] = command;
    argvs[1] = NULL;
    if (execvp( argvs[0], argvs) == -1 )
       perror("exec failed");

    return 0;
 }

Нужно ли указывать как минимум один аргумент в execvp?и установить для него значение NULL или некоторые другие значения nullterminations?

1 Ответ

0 голосов
/ 27 октября 2018

Если argvs объявлено как показано ниже

char *argvs[2]; /* array of pointer */

тогда приведенный ниже код должен работать на вашем компьютере

int main(int argc, char *argv[]) {
        char command[250] = "ls";
        char *argvs[2];
        argvs[0] = command;
        argvs[1] = NULL;
        if (execvp( argvs[0], argvs) == -1 )
                perror("exec failed");

        return 0;
}

Должен ли я указать как минимум один аргумент в execvp?

со страницы руководства execvp

int execvp(const char *file, char *const argv[]); /*its having fixed no of argument */

это означает, что вы должны предоставить ровно два аргумента для execvp().

...