Linux下的printf输出不显示问题

今天写了个服务器的demo,但是中间的printf都没有显示出来,测试了一波,都没有找到明显的原因。

查了一下,原来是输出缓冲的问题,所以单独的程序,执行结束即刷新缓冲区,带死循环的程序,陷入循环中,迟迟不刷新缓冲区,所以printf的内容不会显示到控制台。

原因: 输出缓冲区的问题.

unix上标准输入输出都是带有缓存的,一般是行缓存。

对于标准输出,需要输出的数据并不是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。

ANSI C中定义换行符’\n’可以认为是行刷新标志。所以,printf函数没有带’\n’是不会自动刷新输出流,直至缓存被填满。

解决方案:

方案1、在printf里加”\n”

方案2、fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上 。

本文标题:Linux下的printf输出不显示问题

文章作者:Yang Shuai

发布时间:2019年04月09日 - 16:04

最后更新:2019年04月09日 - 16:04

原始链接:https://ysbbswork.github.io/2019/04/09/Linux下的printf输出不显示问题/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!