c Программирование: вызов execvp () всегда возвращает false - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь написать простую программу оболочки.Я принимаю пользовательский ввод через getline () и токенизирую эту строку - я сохраняю аргументы в char * arg [];execvp, однако, никогда не работает и всегда возвращает neg.число.

КОД:

char* arg[100];
int i = 0;
for (i; i<100; i++){
    arg[i] = malloc(11); //each one has 11 bytes
}

tokenize();

i = 0;
for (i; i<100; i++){
    printf("Arg %d: %s\n", i, arg[i]);
}

pid_t child = -5;
child = fork();

if (child == 0){
    if (execvp(arg[0], arg) < 0){
        printf("Failed.\n");
        fflush(stdout);
    }
}

ВЫПОЛНЕНИЕ:

ls

ВЫХОД:

Arg 0: ls
Arg 1:
Arg 2:
....
Failed.

Я не уверен, почему это происходит,Любые советы будут с благодарностью.

...