【问题标题】:Can't redirect console output of a program无法重定向程序的控制台输出
【发布时间】:2013-08-18 11:00:12
【问题描述】:

我有一个程序,我想将它的输出重定向到另一个文件。 我尝试使用标准

foo.exe > out.txt

这个不行,文件是空的,但是当我简单地从cmd运行它时,我可以正常看到所有的消息。

我注意到的是,如果我没有正确启动程序,并得到它的使用信息,它确实可以工作。

我检查了源代码 (C++),似乎打印件(使用 printf)不是来自同一个线程。

任何想法为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 我可能会尝试: foo.exe 2>&1 > out.txt 以防应用程序正在写入标准错误。或者 foo.exe 2> out.txt 好。这不是linux吗?那我帮不了你了。
  • 我认为你最好把你的代码贴出来看看发生了什么。

标签: c++ windows multithreading console io-redirection


【解决方案1】:

我设法通过添加解决了这个问题

setbuf(stdout,NULL);

到程序主。

我猜 stdout 缓冲区没有刷新。

【讨论】:

    【解决方案2】:

    程序可以输出stderr或stdout,默认fd为2和1。

    只需使用 "2>&1" ,它的实现类似于 'dup2(1, 2)'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-05
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 2015-09-11
      • 2011-05-28
      相关资源
      最近更新 更多