私は c でマイナー シェルの実装を行っていますが、行き詰っています。
stdin
とをリダイレクトできるようにしたいのですstdout
が、混乱しています。私のシェルでは、プログラムを起動したいときにexecvp
関数を使用します。リダイレクトできるようにしたいstdout
ので、別のプロセスを実行すると、出力は画面ではなくファイルにリダイレクトされます。
サンプルコードは次のとおりです。
pid_t pid;
// Child process
pid = vfork();
if((pid == 0)){
freopen("myfile.txt", "w", stdout);
char* arr[3];
arr[0] = "cat";
arr[1] = "someFileToCat.txt";
arr[2] = NULL;
execvp("cat", arr);
fclose(stdout);
}
ただし、ファイルではなく端末に出力されます。