Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t重定向程序的控制台输出_C++_Windows_Multithreading_Console_Io Redirection - Fatal编程技术网

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?那我就帮不了你了。我想你最好把代码发出来看看是怎么回事。