gpt4 book ai didi

C++:Linux:从 `cout` 以外的多个线程或流通过管道传输到我的程序

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:50 24 4
gpt4 key购买 nike

跟进自 this question ,我注意到当调用这样的管道时,我的 LogRotator 程序没有捕获到两种类型的输出:

$ ./MyMainProgram | ./LogRotator

当我的 LogRotator C++ 程序没有捕捉到输出信息的情况是:

1- 在 MyMainProgram 中,我使用 std::cout 以外的流。例如,std::clog

2- 当 MyMainProgram 使用多线程时。在 MyMainProgram 中,我使用 boost::thread_group,并且我在新线程中 std::cout 的所有内容都没有被 LogRotator 捕获

当进行这样的调用时,这种行为在 linux 中是正常的:

./MyMainProgram > log.txt

但是这可以通过调用来解决

./MyMainProgram > log.txt 2> stderr_log.txt

如何使用管道以相同的方式解决此问题,以便我的 LogRotator 捕获所有内容?

最佳答案

这将在管道传输到 LogRotator 之前将 STDERR 合并到 STDOUT 中:

./MyMainProgram 2>&1 | ./LogRotator

关于C++:Linux:从 `cout` 以外的多个线程或流通过管道传输到我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31896697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com