繁体   English   中英

execvp 不执行用户输入给出的命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM