将C++生成的cerr和cout重定向到Ubuntu中的同一文件
Redirecting C++ generated cerr and cout to the same file in Ubuntu
我的程序生成指向std::cout和std::cerr的输出。当我像在中一样正常运行测试文件时
./a.out <source> &> <target>
target按照生成的顺序捕获这两种类型的输出/a.out.
当尝试为一个简单的单元测试框架自动测试输出时,我在bash脚本中实现了上面的内容:
`rm $OUT_NAME`
`./a.out $NEW_UNIT &> $OUT_NAME`
(带有明显的变量名)。发送到cout的输出打印良好;但发送给cerr的打印错误(有些打印错误;然后打印停止,没有错误)。如果你想知道的话,我先添加了"rm",只是为了完全确保在旧版本上重写/附加不会有问题。
有什么想法吗?
我的系统:Ubuntu 12.04。
在bash中,您应该执行以下操作:
./a.out source > target 2>&1
以将CCD_ 1合并为CCD_。您给出的命令适用于csh
。
如果你想把stdout
合并成stderr
,你会做
./a.out source 2> target 1>&2
./a.out source >> target 2>&1
将解决您的问题2>&1
表示将标准错误(stderr)与标准输出(stdout)组合(或称为重定向)>>
意味着将程序的输出流附加到"目标"的末尾。如果使用单个>
而不是stderr
0,则意味着用"target"替换程序的输出流。
p.S。假设您的代码有两个不同的输出std::cout<<"results"<<endl
和一些CCD_ 12
在bash中,您可以执行./a.out source 1>>Result.txt 2>> Debug.txt
您的"结果"将存储在Result.txt中,您的"调试信息将存储在debug.txt中。1>>
意味着标准输出重定向到某个地方的后面,您也可以使用1>
,这意味着标准的输出重定向到某处2>>
意味着标准错误重定向到某个地方的后面,你也可以使用2>
,这意味着标准的错误重定向到的某个地方
如果您想使用脚本自动运行程序,这将非常有用。
在bash中,这应该有效:
./a.out source >target 2>&1
- 无法将 GLFW 库与 Ubuntu 18.04 上的头文件链接
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- 生成文件:6:目标'all'的配方在 Ubuntu-16.04 上失败
- OBJ 文件C++与 ubuntu 问题
- 是否可以在 c++ 中创建一个文件并为其提供属性以将其隐藏?(在 Ubuntu 上)
- 在 Ubuntu 18.04 上,我编译的 cpp 可执行文件找不到 VTK7 依赖项
- 当有 icqdesktop 错误时如何编辑制作文件 (制作: *** [所有] 错误 2) Ubuntu 18.04 6
- 在 ubuntu 上安装 c++ 标准库文件
- Clang格式不使用.clang格式的文件ubuntu(没有错误)
- 在 Ubuntu 16.04 上使用 Cmake 读取C++中的文件
- 在 Ubuntu(linux OS)中将一个巨大的文件读入C++向量
- 使用 libcurl C++将文件下载到 Ubuntu,简单示例不起作用
- 如何在Ubuntu中将内容从一个文件传输到另一个文件
- Linux Ubuntu 中的文件内输出 unicode 符号
- 在 Windows 上的 ubuntu 中执行.sh文件
- 在Boost标头文件中编译错误.Centos 7失败,在Ubuntu上编译16.04
- GRPC编译错误Protobuf 3.2.0(用旧版本的Protoc生成文件)Ubuntu 16.04
- 从Ubuntu中的CPP程序创建新文件
- 使用 ubuntu Linux 的 c++ 文件重定向和编码问题
- Ubuntu文件所有权CPP