我想将所有stderr
重定向到一个文件,我的记录器也会在应用程序(游戏)运行的整个过程中使用该文件。
以下内容将其重定向到控制台,但它永远不会出现在我的文件中,并且在游戏循环结束后使用fclose
实际上并没有做任何事情,通常应该这样做。
freopen(Logger::logFile.c_str(),"a",stderr);
如何在游戏循环中将stderr
输出到文本文件,那么任何帮助都会很棒。
答案 0 :(得分: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