C++ 将程序的输出写入两个不同的文件中
我必须在ssh中从远程服务器上执行作业。 此作业(用C++编写)打印到标准输出。我必须选择结果并写入输出文件(log_tests.txt)。我知道 但是我必须将一些内容写入一个文件,而将其他内容写入另一个文件(log_tests2.txt)。我不想直接从源代码中写入正确的文件,因为我应该修改的代码上的位置大约是200:但是如果有必要对两个不同文件的输出进行通道化,我可以将cout更改为cerr。有办法吗 (服务器使用Unix,源代码使用C++11)C++ 将程序的输出写入两个不同的文件中,c++,c++11,command-line,command,C++,C++11,Command Line,Command,我必须在ssh中从远程服务器上执行作业。 此作业(用C++编写)打印到标准输出。我必须选择结果并写入输出文件(log_tests.txt)。我知道 但是我必须将一些内容写入一个文件,而将其他内容写入另一个文件(log_tests2.txt)。我不想直接从源代码中写入正确的文件,因为我应该修改的代码上的位置大约是200:但是如果有必要对两个不同文件的输出进行通道化,我可以将cout更改为cerr。有办法吗 (服务器使用Unix,源代码使用C++11) 提前谢谢 如果将其他消息重定向到cerr,命令
提前谢谢 如果将其他消息重定向到cerr,命令将是
nohup./my_executable_name>log_tests.txt 2>log_tests2.txt
。然而,是否有可能通过某种模式来识别消息的内容?如果是,可以使用grep选择适当的消息集。另一方面-如果您可以用cerr
替换cout
,为什么不用streamout1
替换cout
,并将后者替换为您自己打开的流以写入文件。因为在cout和cerr上打印时使用输出格式(iomanip和其他)如果与streamout1相等,我就不知道。。。。我在尝试你的解决方案。不,每条消息都有一个模式。因此,没有grep@ArturR.Czechowski是的,它有效。谢谢std::cout
和std::cerr
是std::ostream
的实例。文件流是std::ofstream
的实例,它在std::ostream
之后继承。所以,你所有的iomanips和其他人都应该是安全的。@ArturR.Czechowski Ok。但是用这种方式,我必须修改源代码中的所有200个位置,而不是第一个解决方案,我必须单独修改27个位置(我用cerr替换cout,而cout保持不变)
nohup ./my_executable_name > log_tests.txt 2>&1 &