C++ Can';t重定向程序的控制台输出
我有一个程序,我想重定向它的输出到另一个文件。 我试着使用标准C++ Can';t重定向程序的控制台输出,c++,windows,multithreading,console,io-redirection,C++,Windows,Multithreading,Console,Io Redirection,我有一个程序,我想重定向它的输出到另一个文件。 我试着使用标准 foo.exe > out.txt 这不起作用,文件是空的,但当我从cmd运行它时,我可以正常地看到所有消息 我所注意到的是,如果我没有正确启动程序,并且没有收到它的使用信息,那么它确实可以工作 我检查了源代码(C++),似乎打印(使用printf)不是来自同一个线程 知道为什么会发生这种情况吗?我该如何修复它?程序可以使用stderr或stdout输出,默认fd为2和1 只需使用“2>&1”,这是类似于“dup2(1,2)
foo.exe > out.txt
这不起作用,文件是空的,但当我从cmd运行它时,我可以正常地看到所有消息
我所注意到的是,如果我没有正确启动程序,并且没有收到它的使用信息,那么它确实可以工作
我检查了源代码(C++),似乎打印(使用printf)不是来自同一个线程
知道为什么会发生这种情况吗?我该如何修复它?程序可以使用stderr或stdout输出,默认fd为2和1
只需使用“2>&1”,这是类似于“dup2(1,2)”的实现。我通过添加
setbuf(stdout,NULL);
到主程序
我猜stdout缓冲区没有刷新。如果应用程序正在写入stderr,我可能会尝试:foo.exe 2>&1>out.txt。或foo.exe 2>out.txt正常。这不是linux?那我就帮不了你了。我想你最好把代码发出来看看是怎么回事。