【Linux】 Linux 小项目—— 进度条

这篇具有很好参考价值的文章主要介绍了【Linux】 Linux 小项目—— 进度条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础知识

1 \r && \n

我们熟悉的\n 实际上是两个操作 换行与回车
回车是将光标回到行开头

换行时将光标移到下一行
而“\r” 执行的是回车操作

我们可以看一下例子:

  1. 使用 “ \n ” 【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器
    来看效果:

【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器

  1. 不使用“ \n ”
    【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器

来看效果:
【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器
为什么会产生这样的区别???
原因就在缓冲区

2 行缓冲区

缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

“\n” 可以清空缓冲区 使内容出现在显示器是上
fflush()函数也可以完成类似功能。

3 函数介绍

  1. Sleep函数
    Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。
    注意在VC中Sleep中的第一个英文字符为大写的"S"
    在标准C中是sleep(S不要大写),下面使用大写的来说明,具体用什么看你用什么编译器。简单的说VC用Sleep,别的一律使用sleep。
    其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);另外还需要引用头文件 #include <windows.h>
  2. usleep()函数
    usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒)
    注意需要引头文件 #include <unistd.h>个函数不能工作在windows 操作系统中。用在Linux的测试环境下面

进度条实现

版本 1

代码实现

progressbar.h

  1 #include <stdio.h>
  2 #include<string.h>
  3 #include<unistd.h>
  4                                                                                                                                                                               
  5 void progressbar();


progressbar.c

  1 #include"progressbar.h"
  2 
  3 #define style '#' 
  4 #define Length 101
  5 
  6 void progressbar(){
  7   char str[Length];
  8   memset(str,'\0',sizeof(str));
  9 
 10   int cnt = 0;
 11 
 12   while(cnt<101){
 13     printf("[%-100s][%3d%%]\r",str,cnt);
 14     fflush(stdout);
 15     str[cnt++] = style;                                                                                                                                                       
 16     usleep(20000);
 17   }
 18   printf("\n");
 19 
 20 }

main.c

  1 #include"progressbar.h"
  2 
  3 int main(){
  4   progressbar();
  5   return 0;                                                                                                                                                                   
  6 }

运行效果

【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器

版本2

显然 没有进度条会单独使用,一般都是搭配下载使用。
所以接下来我们来模拟一些下载过程:
progressbar.c

  1 #include"progressbar.h"
  2 
  3 #define style '#' 
  4 #define Length 101
  5 
  6 void progressbar(double total, double current){
  7   char str[Length];
  8   memset(str,'\0',sizeof(str));
  9 
 10   int cnt = 0;
 11   double rate =(current * 100.0) / total;
 12   int loop = (int)rate;
 13 
 14   while(cnt <= loop){
 15     str[cnt++] = style;
 16   }
 17 
 18   if(rate >=100){
 19     printf("[%-100s][%0.1lf%%]\r",str,100.0);                                                                                                                                 
 20   }
 21   else
 22     printf("[%-100s][%0.1lf%%]\r",str,rate);
 23 
 24   fflush(stdout);
 25 
 26 }

main.c

  1 #include"progressbar.h"
  2 
  3 double bandwidth = 1.0 * 1024 *1024;
  4 
  5 void download(double total){
  6 
  7   double current = 0;
  8   printf("Download Begin!\n");
  9 
 10   while(current <= total){
 11 
 12     current += bandwidth;                                                                                                                                                     
 13     progressbar(total,current);
 14     usleep(1000000);
 15   }
 16   printf("\ndownload done, filesize: %.1lf\n",total);
 17   printf("\n");
 18 }
 19 int main(){
 20 
 21   download(7.8*1024*1024);
 22 
 23 
 24   return 0;
 25 }

看看效果:
【Linux】 Linux 小项目—— 进度条,一起学Linux吧!,linux,运维,服务器
这下就非常类似我们的下载过程了!文章来源地址https://www.toymoban.com/news/detail-829462.html

Thanks♪(・ω・)ノ谢谢阅读!!!

下一篇文章见!!!

到了这里,关于【Linux】 Linux 小项目—— 进度条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(58)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(73)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(39)
  • 华为云云耀云服务器L实例评测 | Linux系统宝塔运维部署H5游戏

    本章节内容,我们主要介绍华为云耀服务器L实例,从云服务的优势讲起,然后讲解华为云耀服务器L实例资源面板如何操作,如何使用宝塔运维服务,如何使用运维工具可视化安装nginx,最后部署一个自研的H5的小游戏(6岁的小朋友玩的很开心😁)。 前端的同学如果想把自己

    2024年02月07日
    浏览(46)
  • linux并发服务器 —— 项目实战(九)

    数据就绪 - 根据系统IO操作的就绪状态 阻塞 - 调用IO方法的线程进入阻塞状态(挂起) 非阻塞 - 不会改变线程的状态,通过返回值判断 数据读写 - 根据应用程序和内核的交互方式 同步 - 数据的读写需要应用层去读写 异步 - 操作系统提供相应服务 阻塞/非阻塞都是同步IO,只用

    2024年02月09日
    浏览(35)
  • 在Linux服务器上部署Tornado项目

    1、准备服务器: 确保你的服务器上安装了Python。Tornado通常与Python 3兼容,因此建议安装Python 3.x。 安装和配置一个Web服务器,如Nginx或Apache,以用作反向代理,将请求传递给Tornado应用。这有助于提高性能并增加安全性。 配置域名和DNS,以便将域名解析到服务器的IP地址(如果

    2024年02月09日
    浏览(31)
  • (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战

    总体概述: 本篇文章隶属于“手机改造服务器 部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇 来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目,以及内网穿透实现外网访问等全过

    2024年02月04日
    浏览(40)
  • 如何在Linux服务器上部署Vue项目

    1. 在本地将Vue项目打包 以项目运行在vscode为例,在调试窗口输入  npm run build 待命令执行完毕之后,在项目目录下会生成dist文件夹,如下图   2. 创建一个运行文件,名字是:server.js  server.js中的内容如下: const express = require(\\\'express\\\'); const app = express(); app.use(express.static(\\\'./di

    2024年02月01日
    浏览(37)
  • Linux服务器中创建SVN项目详细步骤

    ** 1、《阿里云服务器搭建》------搭建SVN服务 2、在一个服务器的svn上,设置一个端口号对应一个项目 3、如何解决Linux+svn无法显示日志的问题 ** 以下是AI的回答:

    2024年02月11日
    浏览(42)
  • Linux环境下部署项目到服务器完整过程

    1,首先,选择一款云上服务器(这里用的是腾讯云),右侧搜索栏输入云服务器或轻量服务器(这里用的轻量服务器),立即选购 2,选择自己要的服务器配置,系统镜像选择Centos即可 3,实例创建成功后,点击控制台搜索请量服务器找到新创建的实例重置密码 4,点击防火墙

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包