linuux - execvp: при выполнении команды ls - выдается ошибка "ls: невозможно получить доступ к / etc: такого файла или каталога нет" - PullRequest
0 голосов
/ 11 ноября 2010

Следующая функция принимает массив указателей на символы, например: arr [0]: ls arr [1]: -l arr [2]: -a arr [3]: / etc arr [4]: ​​NULL / *Так как execvp ожидает NULL в конце * /

// function call is runCmd(arr);, определение функции ниже:

void runCmd(char *arr[]){

        pid_t child_pid,tpid;
        int child_status;

        child_pid = fork();

        if(child_pid == 0){

                /* The child process executes the exec*/

                execvp(arr[0],arr);

                /*if it returns it must have failed */
                fflush(stdout);
                printf("Unknown Command \n");
                exit(0);
        }
                else {
                /*  let the parent wait for the child */
                do{
                         tpid = wait(&child_status);
                }while(tpid != child_pid);
        }
}

После выполнения я получаю сообщение -

ls: cannot access /etc
: No such file or directory

1 Ответ

7 голосов
/ 11 ноября 2010

Похоже, что вы читаете команду и забыли убрать завершающий символ новой строки, в результате чего ваш ls попытается вывести каталог "/etc\n".

...