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

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

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

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

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

1.缓冲区

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

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

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

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

2.回车换行

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

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

Linux下简易进度条的实现的更多相关文章

  1. linux下实现进度条小程序

    转载自:实现一个简单的进度条 我们平常总会在下载东西或者安装软件的时候看到进度条,这里我们就在linux下实现这个进度条的功能. 1.我们使用的关键打印语句是printf函数: printf(&quo ...

  2. WPF 简易进度条效果

    最近做一个项目,看到以前同事写的进度条效果不错,所以,拿来简化了下,不炫,但是项目中还是够用的. 还是,先来看下调用以后的效果 1.因为ProgressbBar的Foreground显示不得不一样,所 ...

  3. Linux简单的进度条

    echo '进度条' i= bar="" ] do let idx=i% printf "[%-100s][%d%%]\r" "$bar" ...

  4. PHP生成linux命令行进度条

    <?php$total = 100; for ($i = 1; $i <= $total; $i++) { printf("progress: [%-50s] %d%% Done ...

  5. Linux下简易线程池

    线程池简介 线程池是可以用来在后台执行多个任务的线程集合. 这使主线程可以自由地异步执行其他任务.线程池通常用于服务器应用程序. 每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会 ...

  6. Linux下简易蜂鸣器驱动代码及测试实例

    驱动代码: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> ...

  7. linux 卡在进度条进不去解决办法之一

    centos为例 一, 如下: 如果这个地方卡住了的话也许是你上次改了passwd文件,这个是其中一个情况. 如果刚刚开机就卡住了或者怎么卡住了的话在开机的读条时候摁esc显示读取的进程,根据显示的错 ...

  8. C# 模式窗口下更新进度条

    public partial class frmProcessBar : Form { public frmProcessBar() { InitializeComponent(); } public ...

  9. BASH Shell 简易进度条小函数

    不多说,直接上脚本. # processbar <current> <total> processbar() { local current=$1; local total=$ ...

随机推荐

  1. centos7 安装wxPython

    *** exact error that occured. This usually means GTK+ is incorrectly installed.    configure: error: ...

  2. Mysql 使用触发器,把插入的数据在插入到宁一张表里

    CREATE TRIGGER tgr_tablea_insert AFTER //触发器名字 动作在插入数据之后 ON alertinfo //监听哪个表之后触发 FOR INSERT //监听的表的 ...

  3. MYSQL 创建常见问题

    1.创建函数时,报错: 出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL D ...

  4. MobileMovieTexture播放视频

    MobileMovieTexture插件支持IOS系统播放视频文件.简单,方便

  5. [C++] the pointer array & the array's pointer

    int *p[4]------p是一个指针数组,每一个指向一个int型的int (*q)[4]---------q是一个指针,指向int[4]的数组 --> type: int(*)[4] vo ...

  6. pcl知识

    1.pcl/io/pcd_io.h pcl/io/ply_io.h pcl::PLYReader reader; pcl::PCDWriter pcdwriter; 读取ply pcd 2.voidl ...

  7. 去除textarea默认样式

    border: none; resize:none; outline: none;

  8. 10.13DOM中document--文档1找到元素的方法,还有元素内容属性

    今天讲了js的组成部分中的第二组成部分(DOM),DOM包括以下内容: window    -- 窗口                                                 ...

  9. Mybatis 多个Mapper

    在实际应用中的,会有较多个mapper.如果每新建一个mapper,就向SqlMapConfig上加上对应的配置文件,会十分不便. 可以新建一个package,在其下面放置Mapper.java,同时 ...

  10. javascript 如何创建只能执行一次的事件。

    document.getElementById("myelement").addEventListener("click", handler);   // ha ...