我假设您将| tee.exe output.txt
字符串放在项目属性“调试|命令参数”中。
不幸的是,该属性仅支持重定向运算符,不支持管道运算符。如果您 | tee.exe output.txt
在 preoperty 中有字符串并运行转储命令行参数的程序,您会看到该信息只是作为参数传递。“调试 | 命令参数”实际上并没有被成熟的 shell(例如cmd.exe
)处理 - 它只是支持一些简单重定向的 IDE(实际上,它似乎支持的比我预期的要多):
来自http://msdn.microsoft.com/en-us/library/kcw4dzyf.aspx:
You can use the following redirection operators in this box:
< file
Reads stdin from file.
> file
Writes stdout to file.
>> file
Appends stdout to file.
2> file
Writes stderr to file.
2>> file
Appends stderr to file.
2> &1
Sends stderr (2) output to same location as stdout (1).
1> &2
Sends stdout (1) output to same location as stderr (2).
>>
通过使用命令将程序的输出重定向到文件并使用tail-f
命令显示添加到文件中的任何内容,您可以获得所需内容的有限版本。如果你这样做,你可能会想要调用setvbuf( stdout, NULL, _IONBF, 0 )
第一件事,main()
以便 I/O 没有缓冲。否则tail -f
在缓冲区被刷新之前不会看到它,我想你希望看到每个输出操作发生时。
另一种选择是将控制台窗口的“屏幕缓冲区高度”属性提高到一个很大的数字——当我得到一台新的 Windows 机器时,我做的第一件事就是将该值设置为 3000 左右——然后正常调试程序并复制/ 粘贴控制台窗口关闭前的内容。