使用std :: freopen重定向stderr c

using std::freopen to redirect stderr c++

本文关键字:stderr 重定向 freopen std 使用      更新时间:2023-10-16

我想将所有 stderr重定向到一个文件,我的logger在整个应用程序(游戏)正在运行的整个时间内都使用。

以下重定向将其从控制台上移开,但是它从未出现在我的文件中,并且在游戏循环结束后使用fclose实际上并没有做任何事情。

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

在如何将stderr输出到游戏循环中的文本文件上,任何帮助都会很棒。

我们可能在这里玩未定义的行为... ,因为您不得使用 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;
}

在这里,您在 rorry 句子::

之前写下
This ERRORis redirected to a file.sentence is redirected to a file.

不好。我建议您让操作系统对同一文件的重定向进行此操作为您工作,例如在Unix/linux中:

./myprog.sh 2>&1