stdin stdout stderr重定向

1.
每当运行一个新程序时,所有的shell都为其打开3个文件描述符。即标准输入(standard input),标准输出(standard output),标准出错(standard err).
如果不做特殊处理,则这三个描述符都链接向终端。(键盘输入(到终端),显示器(终端)输出)。
(每个进程生来就有三个文件描述符绑定在它们身上。分别指向标准输入、标准输出和标准错误。)
2.测试源码 main.c

#include <stdio.h>
#include <unistd.h>

int main()
{
    int i=0;    
    scanf("%d",&i); //stdin
    printf("stdout: i = %d\n",i); //stdout
    //printf("%d %d %d \n",STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO); //0 1 2
    perror("stderr: test"); //stderr
}

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.)

7./main <in.txt >out.txt
stderr: test: Success
8 stdin,stdout,stderr都重定向
hn@ubuntu:~/Desktop/test$ ./main <in.txt >out.txt 2>&1
9 无输出
hn@ubuntu:~/Desktop/test$ ./main > /dev/zero 2>&1
123
10 无输出
hn@ubuntu:~/Desktop/test$ ./main > /dev/null 2>&1
123

这里写图片描述
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值