8

パイプを作成し、dup2() を使用してストリーム 1 と 2 (stdout と stderr) をそれらのパイプに上書きしました。

fprintf を使用してストリーム 1 または 2 に書き込みたいのですが、プログラムがパイプの反対側で何も受信していないようです。printf() を使用してみましたが、これがデフォルトで標準出力またはストリーム 1 に書き込まれるかどうかはわかりません。ストリーム 1 に書き込む場合は、コードの深いところに問題があると思います。

基本的に、ストリームを表す int を指定して、fprintf() での使用に適した FILE* を取得するにはどうすればよいですか?

4

1 に答える 1

8

ファイル記述子があり、が必要なFILE*場合は、使用できますfdopen

FILE *fdopen(int fd, const char *mode);

fdopenは Posix 関数であり、 に文書化されていman fdopenます。逆を行うには、使用できますfileno

于 2009-03-16T13:47:28.383 に答える