我正在尝试编写一个 shell,它的部分构造是从用户输入的字符串(缓冲区)执行代码。但是,当我尝试使用其他输入(ae.echo a)执行字符串时,它总是会搞砸并返回-1。我不知道为什么。以下是相关部分:
char * buffer = calloc(100, sizeof(char));
...
fgets(buffer, 100, stdin);
buffer[strlen(buffer) - 1] = 0; // necessary because of a newline inserted by fgets
...
cmd = strsep(&buffer, " ");
char * str = malloc(50 * sizeof(char));
strcat(str, "./");
strcat(str, cmd);
strcat(str, ".out");
...
i = execvp(str, (char * *) buffer);