请问stdout和stderr有哪些区别呢?

为什么大佬在写代码的时候,对于一些错误的提示信息喜欢用stderr,而不是直接用printf输出?
这里面是不是有什么讲究?
在linux里面,用于处理输入和输出的文件描述符有三个,分别表示标准输入,标准输出,和标准错误处理。
比如我们常用的 scanf 和 printf,一个从标准输入获取数据,一个往标准输出写入数据。
stdout和stderr都是输出,这两个的区别主要有三点。
首先,stdout有缓冲,stderr没有缓冲。
#include #include int main(){ const char *s = no such file...; while (1) { fprintf(stderr, error : %s, s); sleep(1); } return 0;}比如这个代码,使用stderr,会直接把字符串显示到屏幕上,用户能立马看见。
但是如果换成stdout,用户什么也看不见。
因为代码中没加换行符,程序也没有正常结束。 平时我们用的printf,就是往stdout里面写数据。
所以使用stderr,它的实时性更高,有问题,立马看见。
第二点也跟缓冲有关系。如果使用stdout,当程序发生错误奔溃的时候,缓冲区里面的重要数据也会被清空,看不到日志,问题也不好解决。
第三点,使用stdout和stderr也可以把不同的数据分开,防止放在一起混乱。#include int main(){ fprintf(stderr, 错误信息); printf(正常输出信息); return 0;}这一点在重定向的时候就能体现出来,默认只会把标准输出的数据定向到目标文件中。


氧气传感器在隧道中的应用
影像能力地表超强,华为P50系列正式发布,京东火爆预售中
Morpho为Tensilica便携客户提供图像处理支持
认识碱性电池
诺基亚内置经典《贪吃蛇》游戏与外放的FM收音机
请问stdout和stderr有哪些区别呢?
车载摄像头能做监控吗_车载摄像头可以全车监控吗
TE Connectivity 公布2017财年第二季度财报
VCA2612/2613/2616有效负反馈和传统电缆终端结构电路
行业方案|数商云电子信息行业SRM供应商管理解决方案
vb运行时错误429不能创建对象
智能手机和充电宝结合 你说是个好主意吗?
5G承载网有哪七大关键技术详细资料说明
处理好人机关系,才能更好地享受AI的红利
电子芯闻早报:中移动3G基站退出几成定局
高通骁龙或将发布下一代集成式芯片NSA、SA双模5G组网
如何降低太阳能电池的光损耗
苹果发布隐私指南,可防止他人访问个人数据
建筑能耗监测系统解决方案
绅士802音响的设计