私はこの単純なLinuxシェルで何時間も苦労してきましたが、何らかの理由で最も基本的なものを正しく機能させることができません。このシェルが機能しない例の1つは、mkdirコマンドであるため、入力などの処理方法に深刻な問題が発生しています。作成しようとしたことのないランダムなディレクトリはランダムに作成されません。ディレクトリを作成するたびに、明らかに作成しなかったランダムな名前で他のディレクトリを作成することができます。何かがめちゃくちゃになっていて、手がかりがありません。最後の引数配列を出力していて、そこからは問題ないように見えるからです。誰かが私のためにこれを見てくださいませんか。
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<string.h>
#include<unistd.h>
#include<sys/wait.h>
int main(int argc, char *argv[]){
while(1){
char line[100], *temp, *split[15];
int child_id;
printf("$ ");
fgets(line, sizeof(line), stdin);
line[strlen(line)-1] = '\0';
temp = strtok(line, " ");
int i = 0;
while(temp != NULL){
split[i] = temp;
temp = strtok(NULL, " ");
i++;
}
char *args[i];
int j;
for(j = 0; j < i; j++){
args[j] = split[j];
printf("%s\n", args[j]);
}
child_id = fork();
if(child_id == 0){
execvp(args[0], args);
exit(0);
}else{
wait(&child_id);
}
}
}