Windows控制台输出不是stdout也不是stderr

时间:2017-01-09 20:18:39

标签: c++ windows stream console stderr

是否可以将任何Windows控制台应用程序输出到控制台,而不输出到stdout或stderr?如果是 - 如何捕获/重定向输出?

我有一个第三方控制台应用程序,我曾经从我的C#应用​​程序启动并重定向其标准错误和输出并从我的应用程序中读取它们。随着第三方应用程序的升级,这种方法停止了工作。 在调查期间,我发现它输出到控制台;将stderr重定向到文件导致它不输出到控制台(预期),但文件为空(非常意外):

CNTK.exe 1>out.txt 2>err.txt

out.txt中没有内容也没有err.txt

如果没有重定向,应用程序会将基本诊断信息输出到控制台。

基于源代码,它使用fprintf(stderr,...)进行输出 - 所以我很困惑为什么它不可重定向。即使不管相关应用程序或它如何输出到控制台 - 我都很困惑,即使用户无需将输出重定向到管道,应用程序也可以输出到控制台。

编辑:似乎是由旧版MS cpp运行时中的错误引起的:https://connect.microsoft.com/VisualStudio/feedback/details/1441507/stdout-and-stderr-not-always-flushed-upon-process-exit 第三方应用程序与VS 2013运行时链接,我的测试执行的代码路径没有显式调用fflush(stderr);先退出(尽管不应该这样,但这是由于错误)

0 个答案:

没有答案
相关问题