gpt4 book ai didi

c++ - 使用 std::freopen 重定向 stderr C++

转载 作者:行者123 更新时间:2023-11-28 07:54:12 24 4
gpt4 key购买 nike

我想将所有 stderr 重定向到一个文件,该文件在应用程序(游戏)运行的整个过程中也被我的记录器使用。

以下将它从控制台重定向,但它从未出现在我的文件中,并且在游戏循环结束后使用 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;
}

在这里你在句子之前写下错误:

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

不太好。我建议您让操作系统为您完成此重定向到同一文件的工作,例如在 Unix/Linux 中:

./myprog.sh 2>&1 

关于c++ - 使用 std::freopen 重定向 stderr C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com