我们经常在参考资料时看到这三个东西,本文简单讲解一下这三个是什么
stdout 即standard output标准输出,就是程序从终端正确输出的内容,标准和错误相对。

echo 'This is a test'

以上输出内容即为标准输出
stdin 即standard input标准输入,用户从终端输入内容就是标准输入

read a
echo $a

执行上述代码时,输入的内容即为标准输入,脚本echo的内容即为标准输出
stderr 即standard error错误输出,程序通过终端输出的错误信息,通常看起来没啥区别,但重定向时就会发现问题

#include<stdio.h>
fprintf(stdout,"OK\n");
fprintf(stderr,"ERR\n");

运行该代码时,会这样输出:
OK
ERR
可如果这样运行

gcc test.c;./a.out > test

那么会输出ERR而不输出OK,而OK被输出到了test里
这就可以看出来区别了,使用">"或">>"重定向时,重定向的内容仅仅为标准输出的内容
因此我们通常为了把所有信息去除,会用

command > /dev/null 2>&1

那么问题来了,这个重定向怎么理解

0代表标准输入,1代表标准输出,2代表错误输出
所以这个命令就是 把标准输入重定向到/dev/null,也就是黑洞里面,再把错误输出重定向到标准输出的位置,标准输出的位置是哪呢?就是/dev/null
这个重定向的作用,就是把所有输出信息全部屏蔽管你有没有错误啥都不看肯定比看一堆英文错误来的舒服
读懂了这些就差不多理解这三者的含义了

本文作者:小欢

本文链接:linux下stdout stdin stderr分别是什么 - https://www.xh-ws.com/archives/std.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 小欢博客 所有,遵循知识共享署名-相同方式共享 4.0 国际许可协议。转载请注明出处!