1

共有ライブラリを使用するGUIアプリケーションにfreopenを使用しているため、デバッグメッセージをstdoutからファイルにリダイレクトできます。

私はC++リファレンスサイトのスニペットに基づくコードを使用しています。

/* freopen example: redirecting stdout */
#include <stdio.h>

int main ()
{
  freopen ("myfile.txt","w",stdout);
  printf ("This sentence is redirected to a file.");
  fclose (stdout);
  return 0;
}

これはにリダイレクトstdoutmyfile.txt、最終的に閉じますstdout

ファイルにリダイレクトしてから効果的にリダイレクトを削除して、ファイルをstdout閉じるのではなく通常どおりに画面に出力する方法はありfcloseますか?

4

3 に答える 3

3

いいえ、純粋な C ではありません。特定のシステム (POSIX など) を想定できる場合は、おそらくオプションがあります。

しかし、率直に言って、freopenIMO はハックであり、事前に作成されたコードとの互換性のみが必要です。新しいコードを作成している場合は、代わりに をFILE *関連する関数に渡し、fprintf代わりにを使用する必要がありprintfます。

于 2012-06-27T14:40:56.240 に答える
2

これまでに行ったことはありませんが、dupを使用してfreopenの前にstdoutのコピーである新しいファイル記述子を作成し、後でdup2を使用してその新しい記述子のプロパティをstdoutにコピーして戻します。

http://linux.die.net/man/2/dup2

これは、システムに重複があることを前提としています。それがうまくいくかどうか私に知らせてください!

于 2012-06-27T15:10:31.380 に答える