因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。
前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。
参考:
- APUE第5.4节
- https://www.zhihu.com/question/67629357
因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。
前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。
参考: