シェルを作成しようとしていますが、その構築の一部で、ユーザーが入力した文字列 (バッファー) からコードを実行しています。ただし、追加の入力 (e.echo a) を使用して文字列を execvp しようとすると、常にプーチがねじ込まれ、-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);