为什么大佬在写代码的时候,对于一些错误的提示信息喜欢用stderr,而不是直接用printf输出?
这里面是不是有什么讲究?
在Linux里面,用于处理输入和输出的文件描述符有三个,分别表示标准输入,标准输出,和标准错误处理。
比如我们常用的 scanf 和 printf,一个从标准输入获取数据,一个往标准输出写入数据。
stdout和stderr都是输出,这两个的区别主要有三点。
首先,stdout有缓冲,stderr没有缓冲。
#include比如这个代码,使用stderr,会直接把字符串显示到屏幕上,用户能立马看见。#include int main() { const char *s = "no such file..."; while (1) { fprintf(stderr, "error : %s", s); sleep(1); } return 0; }
#include这一点在重定向的时候就能体现出来,默认只会把标准输出的数据定向到目标文件中。int main() { fprintf(stderr, "错误信息 "); printf("正常输出信息 "); return 0; }
全部0条评论
快来发表一下你的评论吧 !