我在我的 C++ 应用程序中使用一个库,并 try catch 文件中的所有输出。我尝试将 stderr 重定向到 stdout,然后将 stdout 重定向到文件,如下所示:
./a.out 2>&1 > out.txt
这捕获了我的应用程序中的几乎所有内容,但控制台上仍然有一些与我正在使用的库相关的输出。我的问题是:
- 除了 stdout/stderr 之外还有什么吗? (标准输入除外)
- 如果有,我如何在我的案例中识别这些?
- 然后我如何将它们重定向到同一个文件?
注意:如果有人熟悉,库名为 SystemC (这是一个基于 C++ 的事件驱动模拟库/语言,主要用于系统/硬件设计)。
最佳答案
您必须在任何流到流重定向之前设置输出文件,否则 bash 无法检测要输出的文件名。在您的情况下,您可以看到 stderr 输出。
参见bash redirections引用手册。
解决方案:
./a.out >out.txt 2>&1
或者只是:
./a.out &>out.txt
关于bash - 如何识别Linux屏幕上打印的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147658/