1

stdin/stdout をファイルにリダイレクトしたい。このプログラムは Unix OS 向けに書かれていますが、OS の関数の代わりに標準の C/C++ ライブラリを使用するのが良いと思います。dup2()OS関数を使用してそれを行う方法は知っていますが、 onまたはopen()を使用してそれを行う方法をいくつか読みました。標準変数を再度開くと、私が望むことができますか? 0 および 1 のファイル記述子で開かれたファイルを置き換えますか? どちらの方法が良いですか?reopen()stdinstdout

4

1 に答える 1

1

独自のシェルを作成しているので、dup2() と open() の下位レベルの関数を使用します。

stdin で freopen() を実行すると、元の stdin が閉じられ、要求したファイルが stdin の位置で開かれます。したがって、stdin が失われます。もちろん、open() と dup2() を使用してファイル ハンドル 0 または 1 を置き換えても、大きな違いはありません。元の stdin は引き続き失われるため、フォークした後にのみこれを行ってください。

于 2012-12-23T21:22:59.643 に答える