linux下实现简单进度条
2017-04-04 15:23
183 查看
想要实现进度条我们得先搞清楚缓冲机制,那么什么是缓冲机制呢?
我们首先看俩段代码:
ps:
函数名: Sleep
功 能: 执行挂起一段时间
用 法:
在gcc编译器中,使用的头文件为:
Sleep()单位为毫秒,sleep()单位为秒(如果需要更精确可以用usleep单位为微秒)
返回值:
若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。
那么这两段代码有什么区别呢?
我们看到在第二个printf里面少了一个\n,这会产生什么不同的结果呢?
首先我们明确printf在sleep前面,必定是先实现printf再实现sleep
1:第一段代码先在屏幕上输出hello bit!然后停三秒换行!
2:第二段代码是停三秒再在屏幕上输出hello bit!然后没有换行!
那么第二段代码为什么停顿三秒才打印出来的呢?printf明明在sleep前面执行的啊。
下面我们来解开疑惑:
1:什么是缓冲机制
为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。
2:缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
3:因为printf函数存在行缓冲机制,先把数据放入缓冲区然后再显示到屏幕上,如果在里面加上\n的话就会立即输出到屏幕上(即立即执行停3秒换行),在第二个代码中没有\n所以先把数据放到缓冲区中再让printf停3秒执行,而且并不换行。
理解了缓冲机制我们就来实现简单的进度条吧:
我们首先看俩段代码:
ps:
函数名: Sleep
功 能: 执行挂起一段时间
用 法:
void Sleep(DWORD dwMilliseconds);
在gcc编译器中,使用的头文件为:
#include <unistd.h>
Sleep()单位为毫秒,sleep()单位为秒(如果需要更精确可以用usleep单位为微秒)
返回值:
若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。
那么这两段代码有什么区别呢?
我们看到在第二个printf里面少了一个\n,这会产生什么不同的结果呢?
首先我们明确printf在sleep前面,必定是先实现printf再实现sleep
1:第一段代码先在屏幕上输出hello bit!然后停三秒换行!
2:第二段代码是停三秒再在屏幕上输出hello bit!然后没有换行!
那么第二段代码为什么停顿三秒才打印出来的呢?printf明明在sleep前面执行的啊。
下面我们来解开疑惑:
1:什么是缓冲机制
为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。
2:缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
3:因为printf函数存在行缓冲机制,先把数据放入缓冲区然后再显示到屏幕上,如果在里面加上\n的话就会立即输出到屏幕上(即立即执行停3秒换行),在第二个代码中没有\n所以先把数据放到缓冲区中再让printf停3秒执行,而且并不换行。
理解了缓冲机制我们就来实现简单的进度条吧:
相关文章推荐
- 简单实现linux下的循环进度条
- Linux下实现简单进度条
- linux下实现简单的彩色进度条程序
- vim的简单配置及Linux下实现进度条
- Linux下实现一个简单进度条和shell脚本实现彩色进度条
- Linux下简单进度条实现
- 【Linux】简单实现进度条
- 【Linux】简单实现进度条
- Linux下实现简单进度条(彩色版)
- Linux下实现进度条程序的简单实现
- 【Linux】简单实现进度条
- LInux下实现简单的彩色进度条(Makefile版)
- Linux环境下实现简单进度条
- Linux下的简单进度条实现
- Linux网络编程:一个简单的正向代理服务器的实现
- 通过MediaPlayer实现简单的音乐播放(进度条实现快进的功能)
- minigui界面生成工具的一种简单实现方式,轻松实现Windows/linux minigui 跨平台界面编程
- 史上linux最简单的shell功能实现
- Python获取linux主机ip的简单实现方法
- linux之TCP/IP创建线程实现简单聊天(2)