一部の出力をリダイレクトする方法

原始的だが、プログラム中の一部の出力だけを別ファイルにリダイレクトする方法。

  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に出てしまう。…注意するまでもないか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です