Linux下简易进度条的实现代码

在生活中,进度条是很常见的,那么,进度条是如何实现的呢?

首先,进度条的动态是利用人眼视觉暂留效果的。实际上是如下过程:

先输出:[=     ]表示进度是1%,刷新之后

再输出:[==    ]......由于刷新的很快,所以看起来像是等号不断向后增加,直到进度完成。

在写这个程序之前我们需要了解一下的知识:

1、缓冲区

缓冲区分为无缓冲、行缓冲、全缓冲。

无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr。

行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作。典型的代表是键盘的操作。

全缓冲:表示的是输入输出写满缓冲区才执行I/O操作。典型的代表是磁盘的读写。

2、回车换行

回车用'\r'表示,表示的是回到这行的起始位置。换行用‘\n'表示,表示的是换行到下一行。

在C语言中,刷新缓冲区的函数是fflush函数,强制刷新缓冲区。实现这个进度条应使用的是无缓冲,实时的将进度条的变化显现出来。在这里,不需要换行只需要回车。

程序代码如下:

以上这篇Linux下简易进度条的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Linux用make指令编译进度条程序

    本文实例为大家分享了Linux下写一个简单进度条的具体代码,供大家参考,具体内容如下 首先建立一个新的文件,touch progress_bar.c 执行该vim progress_bar.c命令,写进度条的程序.写进一个进度条程序: #include<stdio.h> #include<unistd.h> #include<string.h> void progress() { int i = 0; char bar[102]; memset(bar,0,102*si

  • linux shell进度条实现方法

    直接看代码吧,很简单 复制代码 代码如下: #!/bin/bash b=''i=0while [ $i -le  100 ]do    printf "progress:[%-50s]%d%%\r" $b $i    sleep 0.1    i=`expr 2 + $i`            b=#$bdoneecho

  • Linux下模拟实现进度条实例详解

    Linux下模拟实现进度条 在Linux系统下模拟进度条,首先需要了解一些简单基础知识: 1.在Linux系统下,\r是回车符,\n是换行符,回车是行不变光标回到该行的起始位置,换行是跳转到下一行,但是光标位置不变: 2.C\C++的输入输出都有缓冲区,都为行缓冲,行刷新,通过回车换行刷新到I\O区: 3.1秒 = 1*10的三次方毫秒 = 1*10的6次方微秒 Linux下c代码实现: 编写Makefile: 代码运行结果: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • Linux下简易进度条的实现代码

    在生活中,进度条是很常见的,那么,进度条是如何实现的呢? 首先,进度条的动态是利用人眼视觉暂留效果的.实际上是如下过程: 先输出:[=     ]表示进度是1%,刷新之后 再输出:[==    ]......由于刷新的很快,所以看起来像是等号不断向后增加,直到进度完成. 在写这个程序之前我们需要了解一下的知识: 1.缓冲区 缓冲区分为无缓冲.行缓冲.全缓冲. 无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr. 行缓冲:表示的是输入输出遇到换行才执行真正的I/O操

  • Linux简易彩色进度条的实例代码

    在实现进度条之前,我们需要先简单了解一些知识: 一.缓冲区: 缓冲区分为无缓冲.行缓冲.全缓冲. 无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr. 行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作.典型的代表是键盘的操作. 全缓冲:表示的是输入输出写满缓冲区才执行I/O操作.典型的代表是磁盘的读写. 所以我们在实现的时候需要每次输出完都需要使用fflush(stdout)将缓冲区刷新,以便下一次的输出. 二.'\r'和 '\n'的区别: 回车用'\r'表

  • Android自定义双向进度条的实现代码

    想整个双向的进度条,就是可以选取播放范围的. 像这样: 然而官方控件里只有单向的.不要慌,我们自己画一个. 绘制一个进度条主要是三方面.1.样式,2.尺寸,3.操作监听. 完整代码来一遍: 注释基本上就把原理说明了一下. package util; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;

  • C# Oracle批量插入数据进度条的实现代码

    前言 由于项目需求,需要将Excel中的数据进过一定转换导入仅Oracle数据库中.考虑到当Excel数据量较大时,循环Insert语句效率太低,故采用批量插入的方法.在插入操作运行时,会造成系统短暂的"卡死"现象.为了让用户知道插入的状态,需要制作一个进度条来显示插入的进度. 批量插入 项目中运用的是System.Data.OracleClient.首先将Excel数据通过转换函数转换为DataTable,其中的字段和数据库中相应表格的字段完全对应. public int Impor

  • python动态进度条的实现代码

    python动态进度条的实现代码 有时候我们需要使用print打印工作进度,正常使用print函数会导致刷屏的现象,举个最简单的例子,从1打印到10,每次停顿0.1秒 这样看起来很麻烦,有没有办法实现动态的进度显示呢?我们可以使用'\r',这个命令可以使光标重新返回头部,之后设置end='',取消python的打印自动换行的功能 import time for i  in range(10):     print('\r比例' ,i/10,end='')     time.sleep(1) 便可

  • Python进度条的制作代码实例

    这篇文章主要介绍了Python进度条的制作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import sys,time #导入模块 for i in range(50): #进度条的长度 sys.stdout.write("#") #进度条的内容,这里要注意了,pycharm有可能不显示write的方法 sys.stdout.flush() #刷新缓存 time.sleep(0.5) #间隔时间,和shell的sleep差不

  • python tqdm实现进度条的示例代码

    一.前言 \quad \quad 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况.这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事. \quad \quad tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持循环处理.多进程.递归处理.还可以结合linux的命令来查看处理情况,等进度展示. 我们先来看一下进度条的效果. from tq

  • 用C++实现一个命令行进度条的示例代码

    缘起 最近做遥感影像融合的GWPCA方法,在带宽比较大的时候速度太慢了,需要有个进度条指示一下,然后我去找进度条的库,发现github上面的C/C++的相应的库似乎没有能在VS下跑的,自己花了点时间写了一个. 效果 实现 大概需要考虑这样几个要素 已完成的百分比 执行速度 已执行的时间 剩余时间 另外进度条的引入不能破坏已有的执行结构,最好和Python的tqdm库类似,通过 start , update 等函数来完成整个进度条,因此对于C语言来说,需要一个定时器,定期将进度条进行重绘(不可能更

  • VB.NET进度条的方法代码

    1.创建进度条: 复制代码 代码如下: <DIV id="Lay1" style="Z-INDEX: 1; LEFT: 1%; VISIBILITY: hidden; WIDTH: 99%; CURSOR: crosshair; POSITION: absolute; TOP: 32px; HEIGHT: 95%; BACKGROUND-COLOR: #ffffff"><FONT face="宋体"></FONT&g

  • BootStrap Progressbar 实现大文件上传的进度条的实例代码

    1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取完了之后将分片数据进行组合. 2.前端代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadTest2.aspx.cs" Inherits="Htm

随机推荐