因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。
前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。
参考:
- APUE第5.4节
- https://www.zhihu.com/question/67629357
本文探讨了标准错误流(stderr)与标准输出流(stdout)在输出机制上的区别,强调了stderr的即时flush特性在日志记录中的重要性,特别是在程序崩溃时能捕捉关键信息。APUE第5.4节提供了详细解释和实际应用场景。
因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。
前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。
参考:
1105

被折叠的 条评论
为什么被折叠?