Linux基础篇五(进度条)

原创 2016年06月08日 07:50:25

一、基本思路

主要就是模仿一些模仿一些游戏或者软件在安装的过程中的进度条。

主要包括一下几个方面:

(1)进度条

(2)进度的数字显示(%多少了)

(3)用一个标识标志文件是否任务还在进行

二、背景知识的铺垫

1、缓存区

先来看两份代码:

第一份:

#include<stdio.h>

int main()
{
	printf("hello world");
	sleep(5);
	return 0;
}
运行结果:

程序运行5秒后,在屏幕上打印出hello world同时程序结束

第二份:

#include<stdio.h>

int main()
{
	printf("hello world\n");
	sleep(5);
	return 0;
}
运行结果:

程序运行后,立刻打印出hello world,等待5秒中之后程序结束

思考:为什么不加\n打印的顺序不一样?

(1)printf为C语言相关的函数,在内存中有缓存去的概念,并且默认为行缓冲,直到缓冲区写满或者遇到\n(换行符,\r仅仅是回车但是并不换行),这时候将缓存区中的内容写出

(2)第一个程序将“hello world”写入缓冲区中,但是缓存区并没有写满,这个时候程序会继续执行sleep(5),程序退出的时候,程序强行清理行缓冲区

2、回车和换行的区别

\r : return 到当前行的最左边。
\n: newline 向下移动一行,并不移动左右

由于进度条每次都会

3、fllush函数

功能:强行将缓存去中的内容写出

下面这三个很重要:

(1)stdout(标准输入)

(2)stdin(标准输出)

(3)stderr(标准错误)

三、具体实现:

代码如下:

#pragma once
#include<stdio.h>
#include<string.h>

void ProBar()
{
	int rate = 0;
	char buffer[102];
	memset(buffer, '\0', sizeof(buffer));
	const char* lable = "|/-\\";
	while (rate <= 100)
	{
		buffer[rate] = '=';
		usleep(100);
		printf("[%-100s][%d%%]%c\r", buffer, rate, lable[rate % 4]);
		fflush(stdout);
		rate++;
	}
	printf("\n");
}

int main()
{
	ProBar();
	return 0;
}

四、运行效果

1、代码截屏


2、运行效果

过程中:


运行结束:



版权声明:本文为博主原创文章,未经博主允许不得转载。

鸟哥的Linux私房菜 基础学习篇(第三版)

第零章 计算器概论 1 计算机:辅助人脑的好工具 接收用户指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或存储成有用的信息。 1.1 计算器的五大单元 输入单元,CPU控制单元,CPU算...
  • niuzhihuan
  • niuzhihuan
  • 2015年08月03日 20:17
  • 1015

《鸟哥的linux私房菜:基础学习篇》第3版 - 核心笔记(全)

一、什么是 Linux 呢?! • Unix 与 Linux 的历史     o Multics 系统:由 Bell(贝尔实验室)、MIT(麻省理工学院)与 GE(美国通     用电器)合作开发的...
  • sinat_36184075
  • sinat_36184075
  • 2017年05月19日 23:50
  • 615

TCP/IP 教程(针对LINUX的网络基础请参看 《鸟哥的Linux私房菜 服务器架设篇(第三版) 》)

TCP/IP 是针对因特网的通信协议。 在此教程中,你将了解到什么是 TCP/IP,以及它如何工作。开始学习 TCP/IP ! TCP/IP 是因特网的通信协议。 通信协议是对计算机必须遵...
  • u010794281
  • u010794281
  • 2015年09月16日 18:31
  • 1614

鸟哥的Linux基础篇整理---1

1、在 Linux 这个系统当中,几乎所有的硬件装置文件都在/dev 这个目录下。 2、几个重要的存储文件       1)、 /etc/passwad :所有的系统上的账号与...
  • zy00000000001
  • zy00000000001
  • 2017年06月25日 22:11
  • 175

基础篇:ubuntu的使用

自知转乎  教授豪   原文链接:HTTPS://zhuanlan.zhihu.com/p/32579020 一文件目录操作 在Ubuntu的的的的下面使用命令行来对文件...
  • jiachen0212
  • jiachen0212
  • 2018年01月08日 14:00
  • 890

电子书-鸟哥的Linux私房菜--基础学习篇(第3版).pdf

http://pan.baidu.com/s/1pJmGh5L 提取密码:6u6u
  • mythling
  • mythling
  • 2014年07月27日 21:14
  • 396

【鸟哥的linux私房菜】终于再次读完《Linux 基础篇》——一些感想

今年暑假才开始入门linux,听说鸟哥的书挺适合入门的,于是就开始从《鸟哥的linux私房菜——基础篇》开始学,暑假的时候,比较粗略地看过了一遍,对linux系统有了整体的概念,也做了一些小笔记,不过...
  • jiange_zh
  • jiange_zh
  • 2015年11月16日 00:28
  • 5709

Java 之JNI基础篇(一)

JNI,即Java Native Interface。它其实就是一套java与本地代码交互的接口或者说是一个协议。通俗的比喻,就是中国人讲中国话,日本人讲日本话,于是中国人碰到日本人,各说各话,无法交...
  • yingshukun
  • yingshukun
  • 2018年01月13日 18:51
  • 10005

JAVA语言程序设计(基础篇)第十版

Queue类 import java.util.Arrays; public class Queue { private int[] element; private int size=8; Queu...
  • summerdream_
  • summerdream_
  • 2017年07月04日 09:06
  • 707

鸟哥的Linux私房菜基础篇第三版 -- 目录

服务器端使用的OS,Linux是最最常用的,所以,日常的部署、排查问题,就不可避免的与Linux打交道,日积月累,对Linux就有了多多少少的了解。 反过来,再系统的从头开始,读一本关于Linux基础...
  • puma_dong
  • puma_dong
  • 2015年09月27日 22:49
  • 2042
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux基础篇五(进度条)
举报原因:
原因补充:

(最多只允许输入30个字)