0

stderrアプリケーション (ゲーム) が実行されている間ずっと、ロガーによっても使用されているファイルにすべてをリダイレクトしたいと考えています。

以下はそれをコンソールからリダイレクトしますが、ファイルには表示されfcloseず、ゲームループが終わった後に使用しても、通常は何もしません。

freopen(Logger::logFile.c_str(),"a",stderr);

stderrゲームループでテキストファイルに出力する方法については、どんな助けも素晴らしいでしょう。

4

1 に答える 1

1

ここでは、未定義の動作で遊んでいる可能性があります... さまざまなものを同じファイルにリダイレクトするために使用してはならないためです。freopen

以下の例では、どのファイルを閉じるかによって、書き方が異なります。

#include <stdio.h>

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

ここでは、文の前にエラーを書きます:

This ERRORis redirected to a file.sentence is redirected to a file.

良くない。Unix / Linux などで、OSに同じファイルへのリダイレクトを実行させることをお勧めします。

./myprog.sh 2>&1 
于 2016-08-02T11:28:25.423 に答える