printf在Windows上输出的位置?

时间:2015-01-20 15:38:43

标签: c++ windows command-line printf chromium-embedded

我有一个Windows(VS2013)c ++应用程序。在整个应用程序中,我调用printf来输出信息。为了更好地浏览一些信息,我想尝试使用findstr。在调试时我无法分辨输出信息的位置。该应用程序有多个线程。

myApplication.exe > foo.txt 2>&1
# here is a bunch of stuff that is printed to the console when I don't think it should be.

将创建一个名为foo.txt的空文件,没有输出,之后会将消息写入控制台,这让我感到困惑,因为我认为上面的命令应该同时管道stderrstdout文件foo.txt。正在运行type foo.txt会显示一个空文件。

类似地,我无法将输出传递给findstr或类似的,甚至无法告诉它输出的位置(看起来像是正常的stdout

从cygwin shell运行命令(我试过,因为我认为stdoutstderr存在问题而文本正在通过管道传输到其他东西)没有显示任何输出,支持我的想法,可能存在问题。输出到的文本在哪里?

编辑:我使用chromium embedded framework似乎已经变得相关了,在搜索代码时似乎有一些类似的东西:

// Add console so that 'logging' (really printf) is captured
// TODO: drop this once we no longer need it?
if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()){
    freopen("CONOUT$", "w", stdout);
    freopen("CONOUT$", "w", stderr);
}

这看起来很有罪,感谢@frymode指出我正确的方向,我会在找到一个解决方案时更新。

0 个答案:

没有答案