栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux环境下:printf输出问题(缓冲区刷新)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux环境下:printf输出问题(缓冲区刷新)

目录
  • printf函数输出问题
    • 1.缓冲区满
    • 2.强制刷新缓冲区
    • 3.程序结束时

printf函数输出问题

printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有以下三种情况满足,才会输出到屏幕。

  1. 缓冲区满了
  2. 强制刷新缓冲区
  3. 程序结束时
1.缓冲区满

这里没法举例说明,因为缓冲区可能有 几M大小 (滑稽)。

2.强制刷新缓冲区
  1. 使用 fflush来刷新

示例:原程序

#include
#include
#include

int main(void)
{
    printf("hello world");
    sleep(5);
    exit(0);
}

在程序结束,即睡了五秒后,才显示出要打印的

使用fflush:

#include
#include
#include

int main(void)
{
    printf("hello world");
    fflush(stdout);
    sleep(5);
    exit(0);
}

这里在printf语句结束后,使用fflush强制刷新缓冲区,就先打印出来内容,再执行的 sleep语句。

  1. 使用 'n’

示例:

#include
#include
#include

int main(void)
{
    printf("hello worldn");
    //fflush(stdout);
    sleep(5);
    exit(0);
}

运行:
使用换行符,也会刷新缓冲区,再sleep.

3.程序结束时

就像上面的示例:

#include
#include
#include

int main(void)
{
    printf("hello world");
    sleep(5);
    exit(0);
}

等到程序结束时候,printf的内容才显示出来。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号