您的位置:首页 > 运维架构 > Linux

【Linux】编写简易的进度条

2017-11-28 17:17 239 查看
      进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。在生活中,进度条是很常见,进度条的动态是利用人眼视觉暂留效果的。

      所以在进行编写的时候需要了解什么是缓冲区:

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

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

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

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

下面以简易的代码实现进度条:



    在上面的代码中,如果不加睡眠时间函数,结果便会全部打印出来,就达不到想要的效果。所以调用了usleep函数,usleep函数能把进程挂起一段时间, 单位是微秒(千分之一毫秒)。本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。这个函数不能工作在windows 操作系统中。用在Linux的测试环境下面。
其它的时间函数:

sleep()---------以秒为单位

unsigned int sleep(unsigned int seconds);

usleep()------以微秒为单位

unsigned int usleep(unsigned int useconds);除了时间单位为微秒以外,在使用上与sleep()差不多。

nanosleep()---以纳秒为单位

关于换行:

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

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

结果如图:



      以上就是在linux环境下简易进度条的实现,为了界面的美观可以在输出时加上字体的颜色,以及使用一些动态旋转的小图标增加视觉效果。初学系统,有不足的地方欢迎大家批评指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: