[英]execvp not executing commands given by user input
我正在尝试执行用户输入给出的命令行,但由于某种原因 execvp() 函数没有执行该命令。 我读入用户输入并将其拆分,将其存储到一个数组中并使用 excevp() 函数来执行它。 我什至打印出阵列中的点,以确保它将令牌放置在正确的位置,并且确实如此。 这是我的 C 代码
char b[100];
int i = 0;
char *token;
char *array[3];
printf("Please enter the command you want to use: ");
fgets(b, 100, stdin);
token = strtok (b, " ");
while (token != NULL){
array[i++] = token;
printf("%s\n",token);
token = strtok(NULL, " ");
}
printf("%s", array[0]);
printf("%s", array[1]);
execvp(array[0], array);
因此,例如,如果我要在程序的命令行中输入“ls”并按回车键,它只会转到下一行而不会执行任何操作。 有什么建议可以解决这个问题,因为我不知道从哪里开始?
问题是array[0]
是ls\\n
(因为fgets
读取换行符)而不是ls
你也必须删除\\n
。
您可以简单地创建一个分隔符数组,如下所示:
char delimiters[] = " \t\n";
然后简单地做
token = strtok(b, delimiters); // Use delimiters instead of only " " (whitespace)
while (token != NULL) {
array[i++] = token;
printf("%s\n", token);
token = strtok(NULL, delimiters); // Use delimiters instead of only " " (whitespace)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.