c编程:execvp()调用总是返回false

时间:2019-03-02 04:17:38

标签: c shell process exec execvp

我正在尝试编写一个简单的shell程序。我通过getline()获取用户输入,并将该字符串标记化-我将参数保留在char * arg [];中。但是,execvp从不工作,并且始终返回负数。数字。

代码:

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.

我不确定为什么会这样。任何提示将不胜感激。

0 个答案:

没有答案