1.
每当运行一个新程序时,所有的shell都为其打开3个文件描述符。即标准输入(standard input),标准输出(standard output),标准出错(standard err).
如果不做特殊处理,则这三个描述符都链接向终端。(键盘输入(到终端),显示器(终端)输出)。
(每个进程生来就有三个文件描述符绑定在它们身上。分别指向标准输入、标准输出和标准错误。)
2.测试源码 main.c
gcc -o main main.c
3.
1.默认的输出,不重定向
./main
123
stdout: i = 123
stderr: test: Success
2. 只有stdin(0)重定向(文件输入)
./main 0< in.txt
stdout: i = 688
stderr: test: Success
3. 只有stdout(1)重定向
./main 1> out.txt 或者直接 ./main > out.txt
123
stderr: test: Success
4. 只有stderr(2)重定向
./main 2> out.txt
123
stdout: i = 123
5. stdout,stderr都重定向输出(分别输出)
./main 1>out.txt 2>err.txt
123
6.stdout,stderr都重定向输出(都输出到同一文件)
./main > out.txt 2>&1
(./main > out.txt 是标准输出重定向到out.txt,而2>&1则表示标准错误重定向到标准输出,也输出到out.txt.)