码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 72.Linux系统下printf函数的输出问题


    目录

    printf函数输出问题

    为啥要放到缓冲区呢? 

    \n 强制刷新缓冲区 

    fflush 强制刷新缓冲区 


    printf函数输出问题

            在 Linux 下,printf 函数通常会先将输出放入缓冲区而不是立即将其发送到终端或文件。这是为了提高性能,因为逐个字符或逐个字节地发送输出会更加低效。

    为啥要放到缓冲区呢? 

    将输出放入缓冲区的主要目的是提高程序的性能。直接将每个字符或字节立即写入到输出设备(如终端或文件)可能会导致频繁的系统调用和磁盘/网络 I/O 操作,这在性能上是昂贵的。因此,缓冲的使用可以减少这种开销,提高程序的运行效率。

    以下是一些关于为什么要使用缓冲区的重要原因:

    1. 减少系统调用: 每次写入输出设备都会导致系统调用,这是操作系统与硬件交互的开销。通过将输出暂时存储在缓冲区中,程序可以减少系统调用的次数。

    2. 提高磁盘和网络效率: 如果输出是写入磁盘文件或通过网络发送的,那么频繁的写入可能会导致较低的效率,因为磁盘和网络 I/O 操作通常比内存操作慢得多。通过将输出存储在内存中并按块写入,可以减少实际的物理 I/O 操作,提高效率。

    3. 提供更好的用户体验: 缓冲可以将小块输出组合成较大的块,以提供更连贯和可读性更强的输出。例如,当你在终端上看到一行完整的文本而不是逐字符显示时,这是缓冲的效果。

    4. 减少碎片化: 将输出合并到较大的块中可以减少磁盘上的碎片化,这有助于提高磁盘的寿命和性能。

    printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有以下三种情况中的一种情况满足,才会输出到屏幕。
    1 缓冲区满
    2 强制刷新缓冲区 fflush 或者加上 \n
    3 程序结束时
     

    执行程序是空格先闪3秒才出现 hello

    进程是先刷新缓冲区才退出的
    exit(0)调用后,刷新缓冲区,然后会调用_exit(0),这个才是真正退出进程的方法
    所以,如果代码上写的是_exit(0),则没有刷新缓冲区就退出进程了。 

    \n 强制刷新缓冲区 

    运行后如下 屏幕上先出现hello 再出现空格3秒

    fflush 强制刷新缓冲区 

  • 相关阅读:
    代码随想录算法训练营Day58 | 单调栈(1/3) LeetCode 739. 每日温度 496.下一个更大元素 I
    LayaBox---TypeScript---首次接触遇到的问题
    NPDP 02组合管理
    python学习--字符串的驻留机制
    基于BES平台音乐信号处理之DRC算法实现
    武汉新时标文化传媒有限公司抖音小店运营技巧有哪些?
    Qt开发-QT Widgets
    Dokcer搭建Apache Guacamole堡垒机
    【tensorflow】制作自己的数据集
    六一儿童节与AIGC:科技与童趣的奇妙融
  • 原文地址:https://blog.csdn.net/weixin_63779802/article/details/133037966
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号