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 中:

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