应用层一般log打印函数都经过封装了,这样可以设置log等级,方便调试,可以直接屏幕输出,也可以保存到文件或者发送到云端。现只看屏幕输出部分,跟进这些函数,最终就是输出到 stderr 或者 stdout 或者调用printf。
先看一个函数:
void std_err_out(void)
{
fprintf(stdout,"Hello ");
fprintf(stderr,"World!");
}
打印结果是:World!Hello 。原因是在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕,而stderr是无缓冲的,会直接输出。
第二个函数:
void simple_out(void)
{
fprintf(stderr, "%s_%d,stderr output!\n",__FUNCTION__,__LINE__);
fprintf(stdout, "%s_%d,stdout output!\n",__FUNCTION__,__LINE__);
printf("%s_%d,printf output!\n",__FUNCTION__,__LINE__);
}
打印结果是:
simple_out_27,stderr output!
simple_out_28,stdout output!
simple_out_29,printf output!
看来加了换行符后