如果我没记错的话,Windows 应用程序可以编译为控制台或 GUI 应用程序。其中一个主要区别是控制台应用程序会自动获得控制台,而 GUI 应用程序则不会(尽管它们可以通过调用AllocConsole
)。
常识告诉我们,如果您使用GUI 应用程序printf
或std::cout
,则输出将无处可去,因为没有控制台可以将其打印到。但我知道可以读取它,因为当我使用 Wine 从 Linux 上的终端运行某些应用程序时,我可以读取printf
和类似函数的输出。(是的,我确信是应用程序打印了它,而不是 Wine。)
我该如何在 Windows 上做到这一点?我试过调试视图尽管它显示了一些来自应用程序的调试文本,但显示的并不像 Wine 那么多,可能是因为 DebugView 仅限于调用OutputDebugString
。
答案1
调用它gui_application.exe > output.txt
让 stdout 进入文件
调用它gui_application.exe > output.txt 2>&1
让 stdout 和 stderr 进入文件
如果您正在使用 windowsstart
命令,您需要记住它start
本身是一个应用程序,因此start /wait gui_application.exe > output.txt
不会执行您想要的操作,因为它正在重定向 stdout start
。
但是你可以逃避相关的价值观:
调用它start /wait gui_application.exe ^> output.txt
让 stdout 进入文件
调用它start /wait gui_application.exe ^> output.txt 2^>^&1
让 stdout 和 stderr 进入文件