Linux任务进度条实现 原创 Linux平台 2022年2月21日 19:51 夏至未至 1300 当前内容 1306 字,在路上,马上到,马上到 ### 目录 [TOC] ### 效果展示  这是进度结果,模拟实现了进度条的前进、百分比的现实、以及稍微的动画特效。 ### 原理描述 因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想看到的效果,这里必须调用: fflush(stdout); 解释一下,fflush(stdout),是对标准输出流的清理,作用是立即清除输出缓存区的东西,并输出,有关于[fflush(stdout)](https://www.codecomeon.com/posts/92/ "fflush(stdout)"),请移驾另一篇博客。 ### 上机实操 #### 源码 #include #include void porc() { int rate = 0; char bar[102]; //进度条长度 memset(bar,'\0',sizeof(bar)); const char* lable = "|/-\\"; //动画特效 printf("加载中,请稍后...\n"); while(rate <= 100) { bar[rate] = '='; printf("[%-101s][%d%%][%c]\r",bar,rate,lable[rate%4]); fflush(stdout); //强制刷新 rate++; usleep(100000); //间隔时间 } printf("\n"); printf("加载完成...\n"); } int main() { printf("网址:https://www.codecomeon.com/ \n"); porc(); return 0; } #### 实现分析 A:数组在进度条的整个过程中,有一个缓存的作用,和进度区间的展示; B:在`printf()`后使用`fflush(stdout)`的作用是立刻将要输出的内容输出。 当使用`printf()`函数后,系统将内容存入输出缓冲区,等到时间片轮转到系统的输出程序时,将其输出。使用fflush(out)后,立刻清空输出缓冲区,并把缓冲区内容输出,每一个循环,‘=’比前一个循环多一个,第二次的输出都去覆盖第一个的输出,如此才展示进度的动态效果 本文标题: Linux任务进度条实现 本文作者: 夏至未至 发布时间: 2022年2月21日 19:51 最近更新: 2022年2月28日 09:39 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 进度条(1) 上一个 Go字符串(strings)常用函数整理 下一个 Linux下进程间通信-套接字 当前文章评论暂未开放,请移步至留言处留言。