Closed rnittaBadCommit closed 3 years ago
ビルトイン関数かどうかを判定する関数OK
仮定を ">" "<" ">>" を見つけたら、前後にスペースを開けた文字列を生成する関数 → その後にスプリット とした char ls[] = {"ls", NULL}; char ls1[] = {"ls", NULL};
char *rev[] = {"rev", NULL};
char *nl[] = {"nl", NULL};
char *cat[] = {"cat", "architecture.c", ">", "hi", ">", "hii" ,NULL};
char *cat1[] = {"cat", "architecture.c", NULL};
char *wc[] = {"wc", "-c", NULL};
char *head[] = {"head", "-c", "1000", NULL};
char *time[] = {"time", "-p", "sleep", "3", NULL};
char *echo[] = {"echo", "toto", NULL};
// raw_cmd → リダイレクトもファイル名も残したままのやつ
// cmd → リダイレクトもファイル名も削ぎ落として整形したやつ
char **raw_cmd[] = {cat, NULL};
char **cmd[] = {cat1, NULL};
pipeline(cmd, raw_cmd);
文字列配列STR_Aを基にしてリダイレクトを行う関数OK
文字列配列STR_B(あるいは文字列"pwd")を渡されるとフルパスを返す関数 OK
str_aからstr_bを作る関数 done
pwd >text | ls | cat -e > text
仮定======== パイプの処理とかフォークの処理をされている パイプごとに、それぞれのコマンドは文字列配列(STR_A)に分けられている。 ==========
{ {"pwd", ">text", NULL} ←STR_A {"ls", NULL} {"cat", -e", ">", "text", NULL} }
文字列配列STR_Aを基にしてリダイレクトを行う関数. OK 文字列配列STR_Aを基にしてリダイレクト以外の要素をもつ文字列配列の配列STR_Bを作る関数
{"pwd", NULL} ←STR_B
ビルトイン関数かどうかを判定する関数 OK 文字列配列STR_B(あるいは文字列"pwd")を渡されるとフルパスを返す関数. OK