Linux实现简单的进度条

来源:互联网 发布:支付宝超强助手源码 编辑:程序博客网 时间:2024/05/29 13:49

说起进度条,我们自然不陌生,在我们下载文件或者视频的时候,都会有进度条来提示我们下载的进度,所以今天我们就在Linux下实现一下简单的进度条的程序。

1、回车换行
回车换行(\n):每次光标移到下一行的行首位置处;
换行(\r):每次光标移到本行的行首位置处
在输入\r,光标将移动到行首,输入\n光标换行并且移动到下一行行首,相当于\n\r。

2、行缓冲区、fflush
 缓冲区分为无缓冲、行缓冲、全缓冲。
  无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr。
  行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作。典型的代表是键盘的操作。
 全缓冲:表示的是输入输出写满缓冲区才执行I/O操作。典型的代表是磁盘的读写。
printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:
1 缓冲区填满
2 写入的字符中有‘\n’ ‘\r’
3 调用fflush手动刷新缓冲区
4 调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新
满足上面4个条件之一缓冲区就会刷新,,也就是printf会真正调用write来写入
当我们执行printf的进程或者线程结束的时候会主动调用flush来刷新缓冲区,所以程序结束,也会刷新。

3、sleep,usleep
Linux下(使用的gcc的库),sleep()函数是以秒为单位的,sleep(1);就是休眠1秒。而MFC下的Sleep()函数是以毫秒为单位的,sleep(1000);才是休眠1秒。而如果在Linux下也用微妙为单位休眠,可以使用线程休眠函数:void usleep(unsigned long usec)。

程序代码如下:
  这里写图片描述
 
 结果:
 这里写图片描述
  

0 0
原创粉丝点击