Linux:进度条编写

前置知识

回车与换行

换行就是相当于vim中的命令模式的j。让光标直接向下一行。

回车则是相当于vim中的^,回到行头。

因此像c语言中的\n其实执行了回车与换行两个动作

缓冲区

讲缓冲区概念前,我们先编写一个简单的程序:

简单运行一下:

当然没什么问题。

这时候我们再将\n去掉看看效果:


这时候我们竟然是先休眠再打印,莫非是先执行sleep再执行printf?

答案是必不可能,c语言一定是从上至下执行语句的。

根本原因是,printf确实执行完毕了,但是放在内存的缓冲区当中。

只有当缓冲区刷新的时候,内容才会打印到屏幕上。

缓冲区在以下几种情况下会刷新:

  1. \n
  2. 缓冲区满了
  3. 程序结束
  4. fflush强制刷新

fflush

fflush是c语言中一个函数,我们来man一下看看其成分:

注意到,fflush传入的参数是FILE *stream

这时我们就又要提到一个小知识了,c语言会默认帮我们打开三个文件流:stdin、stdout、stderr。

前者是键盘,后两者是显示器。

因此我们传入stdout即可刷新缓冲区:

完美达到效果了呢!

倒计时

有了前面的知识储备,我们可以先写一个简单的倒计时程序来练练手:

效果如下:

amazing ah!

进度条

好了,现在开始正式进入我们的进度条编写。

首先我们先创建所需的文件:Proccess.c Proccess.h Main.c makefile

首先我们要明确一下进度条使用的场景,像下载情景。当然我们现在还未接触网络,因此可以模拟一个下载场景:

那么现在我们只需要实现一个简易的进度条即可:

来尝试简单调用一下:


完美依照预期进行了

颜色优化

我们打印的这个进度条多少有点简陋了,可以用一些颜色块代替:

效果如下:

相关推荐
Android系统攻城狮32 分钟前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
M78佐菲1 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
zbyyd2 小时前
Linux 进程管理详解:从概念到实战
linux·运维·服务器
薛定猫AI3 小时前
OpenAI Codex本地完整配置教程|(Windows/Mac/Linux全平台,修复鉴权报错)
linux·windows·macos
躺不平的理查德5 小时前
OpenSSL 的异步 TLS 1.3 加密
linux·运维·服务器
tedcloud1235 小时前
Awesome DSH Plugin 怎么用?给 DeepSeek Harness 搭建自己的插件生态
大数据·linux·服务器·人工智能·音视频
钓鱼的小小猫5 小时前
从零拿捏Linux(一) ---- 命令(视频秒解)
linux·linux命令
明王明王5 小时前
Ubuntu 26.04 使用 Windows Spotlight:给 Bing Wallpaper 加上 Spotlight 支持
linux·windows·ubuntu
夜月yeyue5 小时前
SOME/IP 服务模型
linux·服务器·单片机·安全·车载系统