1

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

foo.exe > out.txt

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

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

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

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

4

2 回答 2

2

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

setbuf(stdout,NULL);

到程序主。

我猜标准输出缓冲区没有刷新。

于 2013-08-19T08:07:14.890 回答
0

The program may ouput with stderr or stdout, which default fd is 2 and 1.

just use "2>&1" , which is implement like 'dup2(1, 2)'.

于 2013-08-18T12:54:15.997 回答