Probleme mit der Verwendung von execvp für eine erstellte Zeichenfolge
Ich versuche, eine Shell zu schreiben, und ein Teil ihrer Konstruktion besteht darin, Code aus einer vom Benutzer eingegebenen Zeichenfolge (Puffer) auszuführen. Wenn ich jedoch versuche, die Zeichenfolge mit zusätzlichen Eingaben (z. B. Echo a) auszuführen, verschraubt sie immer das Hündchen und gibt -1 zurück. Ich weiß nicht warum. Hier sind die relevanten Stücke:
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);