在通常情况下,Linux/UNIX每个程序在开始运行的时候,都会自动打开三个标准stream(流),分别为标准输入流stdin(文件描述符0),标准输出流stdout(文件描述符1),标准错误输出流stderr(文件描述符2)。 Linux的本质就是一切皆文件,输入输出设备也是以文件形式存在和管理的。
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv)
{
for(int i = 0; i < 5; i++){
fprintf(stdout, "This is stdout[%d]", i);
sleep(1);
}
fprintf(stdout,"\n");//stdout
sleep(1);
for(int i = 0; i < 5; i++){
fprintf(stderr, "This is stderr[%d]", i);
sleep(1);
}
sleep(60);
return 0;
}
>
./test > test.txt
./test 1 > testout.txt ./test 2 > testerr.txt
>>
./test > test1.txt 2>&1
代码中实现重定向操作
#include <stdio.h>
int main(void){
FILE *out = freopen("stdout.txt", "w", stdout);
printf("%s\n", "redirect test");
return 0;
}