0

私は 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);
}  

ただし、ファイルではなく端末に出力されます。

4

1 に答える 1

3

ファイル ストリームはC抽象化です。探しているのは、 、 、 などの低レベルのシステムopenコールcloseですdup2

完全な例については、実行出力のバッファーまたはファイルへのリダイレクトを参照してください。

于 2012-09-30T17:21:28.933 に答える