红联Linux门户
Linux帮助

Linux C printf()打印输出显示不及时以及解决方法

发布时间:2017-07-09 10:51:17来源:今日头条作者:山卡拉少爷
在linux系统下开发, 你可能会遇到这样的情况,使用printf() 函数时,打印输出显示不像预料那样立马输出,也就是是输出不及时。导致这个问题的原因是,printf函数是行缓冲式的输出,当printf遇到 "\n" 时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).
因此, printf("p"); 语句的显示不能立刻显示在屏幕上.
 
在此提供3个解决方法:
1.加上 "\n",即:
printf("p\n");
或者
printf("p");
printf("\n");
 
2.强制刷新缓冲区,缓冲区的数据会被输出到屏幕上,即:
printf("p");
fflush(stdout);
 
3.把缓冲区大小设置为NULL,关闭缓冲区,即:
setbuf(stdout, NULL);
printf("p");
 
并附上测试代码:
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("Hello, world!\n");
printf("ABC");
printf("DEF");
sleep(5);
printf("GHI\n");
printf("JKL");
sleep(5);
fflush(stdout);
printf("MNO");
sleep(5);
printf("PQR");
setbuf(stdout, NULL);
printf("STU");
sleep(5);
printf("VWX");
sleep(5);
printf("END");
return 0;
}
 
这里只是个人所见,如有错误,敬请指正。也希望各路大神指点一二,把更多的知识分享给大家。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31898.html