C++ 从其他程序运行时如何重定向输出?
我有一个可执行程序,从中运行另一个名为main.cpp的程序 Main.cpp都有stdout和stderr消息 我需要将stdout和stderr消息重定向到一个文件 我尝试了不同的选择,但都没有帮助 这是executable.cpp 我尝试此操作时在终端中获得了所有输出,但创建了空文件some.txtC++ 从其他程序运行时如何重定向输出?,c++,io-redirection,C++,Io Redirection,我有一个可执行程序,从中运行另一个名为main.cpp的程序 Main.cpp都有stdout和stderr消息 我需要将stdout和stderr消息重定向到一个文件 我尝试了不同的选择,但都没有帮助 这是executable.cpp 我尝试此操作时在终端中获得了所有输出,但创建了空文件some.txt system("g++ -g main.cpp -o a.out"); system("./a.out &>> some.txt"); 只有stderr消息保存在some
system("g++ -g main.cpp -o a.out");
system("./a.out &>> some.txt");
只有stderr消息保存在some.txt中,但stdout消息在终端上显示
system("./a.out 2>> some.txt");
如何在运行程序时一次将这两条消息保存到其他文件。请尝试
/a.out 2>&1>>some.txt
或/a.out>>some.txt 2>&1
。其中只有一个会起作用,但我现在不确定是哪一个。。。或者应该只有2>&1
,我不太习惯使用追加输出重定向…试试这个:系统(“/a.out>>some.txt 2>&1”)@slepic重定向操作符从左到右进行处理。因此,首先重新打开stdout以追加(>some.txt
),然后重新打开stderr以追加stdout:(2>&1
)@Botje是的,当然,我只是想给出一个快速的答案,不确定正确的组合,因为我不经常这样做,但我确信其中一种组合是正确的:)我会在思考或尝试之后找出答案,但我认为OP可以自己尝试……谢谢大家,system(“/a.out>>some.txt 2>&1”)代码>这部分起作用,但问题是main.cpp程序中的输出语句没有附加到该文件中。文件中可以看到所有错误消息,但无法看到执行的语句。