linux下实现简单进度条

    xiaoxiao2021-03-25  156

    想要实现进度条我们得先搞清楚缓冲机制,那么什么是缓冲机制呢? 我们首先看俩段代码: 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秒执行,而且并不换行。 理解了缓冲机制我们就来实现简单的进度条吧:

    转载请注明原文地址: https://ju.6miu.com/read-5999.html

    最新回复(0)