我正在尝试编写一个简单的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.
我不确定为什么会这样。任何提示将不胜感激。