争怎路由网/系统工具/内容

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

系统工具2024-06-13 阅读
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
在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
#include
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;
}
 
这里只是个人所见,如有错误,敬请指正。也希望各路大神指点一二,把更多的知识分享给大家。

Linux是一套免费使用和自由传播的类Unix操作系统



……

相关阅读