Linux简单彩色进度条的实例代码
在实现进度条之前,我们需要先简单了解一些知识: 一、缓冲区: 缓冲区分为无缓冲、行缓冲、全缓冲。 无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr。 行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作。典型的代表是键盘的操作。 全缓冲:表示的是输入输出写满缓冲区才执行I/O操作。典型的代表是磁盘的读写。 所以我们在实现的时候需要每次输出完都需要使用fflush(stdout)将缓冲区刷新,以便下一次的输出。 二、'/r'和 ‘/n'的区别: 回车用'/r'表示,表示的是回到这行的起始位置。换行用‘/n'表示,表示的是换行到下一行。所以我们在实现的时候需要用的是'/r',才能实现进度条的效果。 三、如何彩色输出: 终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符'ESC'开头。多数转义序列超过两个字符,故通常以'ESC'和左括号'[‘开头。该起始序列称为控制序列引导符,通常由'/033[‘或'/e[‘代替。 通过转义序列设置终端显示属性时,可采用以下格式: /033[ Param {;Param;…}m 或 /e[ Param {;Param;…}m 其中,'/033[‘或'/e[‘引导转义序列,'m'表示设置属性并结束转义序列。Param为属性值,{…}表示可选(多个参数之间用分号隔开,与顺序无关)。 在实现中为了增加可读性可以我们可以将颜色定义为宏,再进行使用。 注意:'/033[0m'用于恢复默认的终端输出属性,否则会影响后续的输出。 四、usleep()函数: usleep()函数的功能是把调用该函数的线程挂起一段时间 , 单位是微秒(即百万分之一秒); 头文件: unistd.h 语法: void usleep(int micro_seconds); 在实现过程中我们可以调用usleep()函数来实现每0.1s刷新进度条的现象。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |