在 c++ 的标准库中,默认定义了4个IO对象,其中 cin 为 istream 类型,cout/ cerr/ clog 为 ostream。而在linux中存在3种文件描述符,分别为 0对应cin,1对应cout,2对应cerr和clog。这两个系统的关系。
实现,我们编写一个c++代码:
// main.cpp
#include <iostream>
using namespace std;
int main(){
cout << "This is cout" << endl;
cerr << "This is cerr" << endl;
clog << "This is clog" << endl;
return 0;
}
编译后生成 a.out 文件。
- 将cout重定向到test.txt文件中
执行如下命令:
$ ./a.out > test.txt
This is cerr
This is clog
$ cat test.txt
This is cout
可以看出使用 > 只是将 cout 的输出重定向到指定文件,其效果类似于 1>
:
$ ./a.out 1> test.txt
This is cerr
This is clog
$ cat test.txt
This is cout
- 将cerr和clog重定向到test.txt文件中
$ ./a.out 2> test.txt
This is cout
$ Mon06 cat test.txt
This is cerr
This is clog
- 将cout输出到test.txt文件中,并将cerr/clog重定向到cout
$ ./a.out 1> test.txt 2>&1
$ cat test.txt
This is cout
This is cerr
This is clog