linux下用程序实现进度条
2017-02-18 11:29
267 查看
对于进度条大家都不陌生,在windows环境下进度条可以显示我们下载的进度,那么今天我们可以在linux环境下模仿实现进度条。
下面我先截图出我的进度条给大家看看,如下图:
接下来我会告诉大家怎么做,可以一步一步实现进度条。
首先,打开linux环境,ls一下 会chuxian一个code目录(ps:code目录是我自己创建的一个目录, 我把每次自己写的程序代码都会放在code目录下,这样的话方便自己查找,同时也不会污染其他的目录)。接下来在code目录下创建一个proc-dar目录:mkdir proc-dar。进入进度条目录:cd proc-bar。接下来创建一个procbar.c文件,touch procbar.c, vim procbar.c编辑进度条文件,在编辑界面写入如下代码:
保存退出之后,建立一个Makefile文件,touch Makefile,vim Makefile,写入如下代码:
保存退出之后,我们make一下 会出现如下界面:
那么,如果我们需要运行procbar,c文件,则只需要输入./procbar即可。
运行之后,就会出现文章一开始美美地进度条啦!!
接下来我想说一下进度条背景知识:
1.关于回车跟换行
先说这个误区,有许多人都认为回车跟换行是一回事,其实不然,回车是回车,换行是换行。
举个简单的例子,
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
这便是回车跟换行的由来。所以大家千万不要搞混了。
记得在大一的时候,c语言老师说过回车跟换行:
符号 ASCII码 意义
\n 10 换行NL
\r 13 回车CR
为什么要说回车跟换行呢?
因为我们的进度条只需要回车不需要换行呀。
2.关于缓冲区fflush(stdout)
有眼尖的小盆友都会看到我的procbar.c文件中会出现一个fflush(stdout)的代码,有好奇心的宝宝就要问了,你的这个代码是神马意思呀?
那么接下来我想跟大家解释一下关于进度条的输出流缓冲区的问题。
C语言缓冲区(缓存)详解
缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。现在您基本明白了吧,缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
下面我先截图出我的进度条给大家看看,如下图:
接下来我会告诉大家怎么做,可以一步一步实现进度条。
首先,打开linux环境,ls一下 会chuxian一个code目录(ps:code目录是我自己创建的一个目录, 我把每次自己写的程序代码都会放在code目录下,这样的话方便自己查找,同时也不会污染其他的目录)。接下来在code目录下创建一个proc-dar目录:mkdir proc-dar。进入进度条目录:cd proc-bar。接下来创建一个procbar.c文件,touch procbar.c, vim procbar.c编辑进度条文件,在编辑界面写入如下代码:
保存退出之后,建立一个Makefile文件,touch Makefile,vim Makefile,写入如下代码:
保存退出之后,我们make一下 会出现如下界面:
那么,如果我们需要运行procbar,c文件,则只需要输入./procbar即可。
运行之后,就会出现文章一开始美美地进度条啦!!
接下来我想说一下进度条背景知识:
1.关于回车跟换行
先说这个误区,有许多人都认为回车跟换行是一回事,其实不然,回车是回车,换行是换行。
举个简单的例子,
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
这便是回车跟换行的由来。所以大家千万不要搞混了。
记得在大一的时候,c语言老师说过回车跟换行:
符号 ASCII码 意义
\n 10 换行NL
\r 13 回车CR
为什么要说回车跟换行呢?
因为我们的进度条只需要回车不需要换行呀。
2.关于缓冲区fflush(stdout)
有眼尖的小盆友都会看到我的procbar.c文件中会出现一个fflush(stdout)的代码,有好奇心的宝宝就要问了,你的这个代码是神马意思呀?
那么接下来我想跟大家解释一下关于进度条的输出流缓冲区的问题。
C语言缓冲区(缓存)详解
缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。
又比如,我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。现在您基本明白了吧,缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。
相关文章推荐
- linux下实现进度条小程序
- 在Linux下实现进度条程序.
- Linux下实现进度条程序的简单实现
- linux下实现简单的彩色进度条程序
- linux下实现进度条小程序
- Linux实现进度条小程序
- 【Linux】用c++实现进度条程序
- Linux下实现进度条小程序
- 在Linux下实现进度条程序
- IO服用实现linux socket聊天程序(select)
- Linux下sniffer抓包程序程序的实现
- Linux中实现一个目录扫描程序
- Linux下Sniffer程序的实现(PF_PACKET,SOCK_RAW,recvfrom,htons(ETH_P_IP),setsockopt(filter))
- 程序的链接和装入及Linux下动态链接的实现 收藏
- 程序的链接和装入及Linux下动态链接的实现
- pvtrace和Graphviz实现对linux下C程序的函数调用跟踪
- Linux下Sniffer程序的实现
- linux下通过脚本实现自动重启程序
- VC技巧:在程序的状态栏中实现进度条
- 学习心得:控件之进度条(在程序的状态栏中实现进度条)