原始的だが、プログラム中の一部の出力だけを別ファイルにリダイレクトする方法。
FILE *fp=stdout; stdout=fopen("file", "w"); ...(printf等stdoutへの出力を含む処理)... fclose(stdout); stdout=fp;
fileno(stdout)でバレる。
(追記) 2003-09-05 15:32
無論、fork+dup2+execによる本式のリダイレクトではないからして(そもそもfork/execしないで一部だけをファイルに落としたいのだ)、write(STDOUT_FILENO)とかの出力は元のstdoutに出てしまう。…注意するまでもないか。