【Linux】调试和Git及进度条实现

ops/2024/11/14 6:03:28/
github-gist">
这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:Linux入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录

  • 1. 简易版倒计时
  • 2. 进度条实现(简易版)
  • 3. 进度条实现(调用版)
  • 4. 进度条实现(回调函数版)
  • 5. 进度条实现(颜色版)
  • 6. Git的介绍
  • 7. Gitee简介
  • 8. 调试


1. 简易版倒计时

实现一个倒计时:
拥有反斜杠/n可以立马刷新,但会自动换行
fflush 可以立马刷新且不会自动换行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2. 进度条实现(简易版)

已经创建好了processBar.h、processBar.c、main.c、可执行程序processbar,如图1所示:
在这里插入图片描述

图1 文件展示
  1. vim processBar.c进入头文件,进行修改,具体如下:
// 引入运行程序、字符串、fflush的源文件
#include "processBar.h"
#include<string.h>
#include<unistd.h>
// 定义字符串常量
const char *lable="|/-\\";
// 具体实现的代码
void processbar(int speed)
{char bar[NUM];// 初始化字符数组memset(bar,'\0', sizeof(bar));int len = strlen(lable);int cnt = 0;while(cnt <= TOP){printf("[%-100s][%d%%][%c]\r", bar, cnt, lable[cnt%len]);// 从左往右以百分号%及旋转体表现进度条// fflush立刻刷新缓存区输出fflush(stdout);// 考虑边界问题bar[cnt++] = BODY;if(cnt < 100) bar[cnt] = RIGHT;// usleep以微秒为单位进行输出usleep(speed);}// 换行printf("\n");
}
  1. vim processBar.h进入源文件,进行修改,具体如下:
#pragma once
#include <stdio.h>
// 宏定义进行封装
#define NUM 102
#define TOP 100
#define BODY '='
#define RIGHT '>'extern void processbar(int speed);
  1. vim main.c进入主函数,进行修改,具体如下:
#include "processBar.h"
#include <unistd.h>
// 主函数表现
int main()
{processbar(50000);return 0;
}
  1. make 重新编译,再./processbar运行可执行程序,具体效果如图2所示:
    在这里插入图片描述
图2 效果图

3. 进度条实现(调用版)

如何调用进度条功能

  1. vim processBar.c进入头文件,进行修改,具体如下:
// 引入运行程序、字符串、fflush的源文件
#include "processBar.h"
#include<string.h>
#include<unistd.h>
// 定义字符串常量
const char *lable="|/-\\";
char bar[NUM];
// 将函数调用进度的占比率传入参数
void processbar(int rate)
{if(rate < 0 || rate > 100) return;int len = strlen(lable);printf("[%-100s][%d%%][%c]\r", bar, rate, lable[rate%len]);fflush(stdout);bar[rate++] = BODY;if(rate < 100) bar[rate] = RIGHT;
}
  1. vim processBar.h进入源文件,进行修改,具体如下:
#pragma once
#include <stdio.h>
// 宏定义进行封装
#define NUM 102
#define TOP 100
#define BODY '='
#define RIGHT '>'// 更改声明
extern void processbar(int rate);
  1. vim main.c 进入主函数,进行修改,具体如下:
#include "processBar.h"
#include <unistd.h>
// 主函数表现
int main()
{// 设置目标变量和当前变量的值int total = 1000;int curr = 0;while(curr <= total){// 换算成百分比的值processbar(curr*100/total);// 设置下载一个任务的增加进度curr += 10;// 加快速度usleep(50000);}// 换行printf("\n");return 0;
}
  1. make重新编译一下,./processbar再运行可执行程序,具体如图3所示:
    在这里插入图片描述
图3 效果图

4. 进度条实现(回调函数版)

  1. 只vim main.c修改主函数,其余processBar.h、processBar.c不变
#include "processBar.h"
#include <unistd.h>// 引入函数指针类型
typedef void (*callback_t)(int);
// 模拟安装或下载进度
void download(callback_t cb)
{// 设置目标变量和当前变量的值int total = 1000;int curr = 0;while(curr <= total){// 换算成百分比的值及加快速度usleep(50000);int rate = curr*100/total;// 通过回调函数,展示进度cb(rate);// 设置下载一个任务的增加进度curr += 10;}printf("\n");
}
int main()
{// 调用函数download(processbar);return 0;
}
  1. make重新编译一下,./processbar再运行可执行程序,具体如图3所示:
    在这里插入图片描述
图3 效果图

5. 进度条实现(颜色版)

C语言颜色的宏定义,大致如下

// \033表示告诉系统要进行颜色设置;[m表示要进行颜色关闭#define NONE         "\033[m"
#define RED          "\033[0;32;31m"
#define GREEN        "\033[0;32;32m"
#define BLUE         "\033[0;32;34m"
#define CYAN         "\033[0;36m"
#define PURPLE       "\033[0;35m"
#define BROWN        "\033[0;33m"
#define YELLOW       "\033[1;33m"
#define WHITE        "\033[1;37m"
  1. vim processBar.c进入头文件,进行修改,具体如下:
// 引入运行程序、字符串、fflush的源文件
#include "processBar.h"
#include<string.h>
#include<unistd.h>
// 定义字符串常量
const char *lable="|/-\\";
char bar[NUM];
// 进行颜色宏定义
#define BLUE "\033[0;32;34m"
// [m表示颜色应用结束
#define NONE "\033[m"// 将函数调用进度的占比率传入参数
void processbar(int rate)
{if(rate < 0 || rate > 100) return;int len = strlen(lable);// 将blue和none插入到[%-100s]中printf(BLUE"[%-100s]"NONE"[%d%%][%c]\r", bar, rate, lable[rate%len]);fflush(stdout);bar[rate++] = BODY;if(rate < 100) bar[rate] = RIGHT;
}
  1. make重新编译一下,./processbar再运行可执行程序,具体如图4所示:
    在这里插入图片描述
图4 效果图

6. Git的介绍

必要性:在公司中,每个编程人员必使用
定义:Git是一个具有网络功能的开源的版本控制器(将远端和本地部署为一体【版本控制器主要是处理各种各样变化的需求,只记录变化】),也可用于多人协作(将一份版本开源,大家一起协助),具体如图5所示:
在这里插入图片描述

图5 Git功能

可操作性: 操作挺多,这里无法详细的讲完,我会单独出一篇博客详细讲解,关注我,后面更新……


7. Gitee简介

定义:而国内的Gitee和国外的GitHub都是基于Git的商业化软件.
必要性:为以后找工作提前铺路,可以将每天的代码上传到该平台上且将该链接可以写在简历中,方便面试官更好的全面认识你。纵使不找工作,记录代码的习惯也是优秀的编程人员所必备的基本素质。
可操作性:大致的提一下国内的Gitee使:
1. 在初始化仓库中:

  • .gitignore:在里面的文件后缀,在推送或下载中均不上传具有相同的文件后缀的文件,具体如图7所示
  • 选择语言:初始仓库语言
  • 添加开源许可证:类似于一个合同,要遵循相应的规定

2. 在设置模板中:

  • Readme文件:类似于说明书
  • lssue和Pull Request模板文件及选择分支模型:涉及到多人协作相关

具体如图6所示
在这里插入图片描述

图6 展示图

在这里插入图片描述

图7 .gitignore具体图

各种操作指令:

  1. 先在Linux中安装git,指令如下:
yum install git
  1. git clone 仓库的完整链接:将远端仓库克隆到本地,如图8所示
  2. git add .:将当前目录下新增的内容添加到本地中,如图9所示
  3. git commit -m “提交的信息”:提交到本地并添加提交日志,如图9所示
  4. git push:推送到远端,如图10所示
  5. git log:可以查看历史信息,如图11所示
  6. git status:查看文件状态,如图12所示
    在这里插入图片描述
图8 git clone图

在这里插入图片描述

图9 add和commit图

在这里插入图片描述

图10 git push图

在这里插入图片描述

图11 git log图

在这里插入图片描述

图12 git status图

8. 调试

前提:程序发布的方式有debug模式和release模式,而调试必须在debug模式下进行,而可执行程序默认为release模式,若要改成 debug模式,需要在源代码生成二进制程序的时候加上-g选项,如图13所示:
在这里插入图片描述

图13 debug模式

指令:gdp
readelf -S 可执行程序:可读取程序的二进制信息,具体如图14所示:
在这里插入图片描述

图14 readelf模式

9. 夹带私货

若你能看到看到这篇文章且能看到这,则说明你我有缘留个关注吧,后面还会接着计算机408、底层原理、开源项目、以及数据、后端研发相关、实习、笔试/面试、秋招/春招、各种竞赛相关、简历相关、考研、学术相关……,祝你我变得更强

好的,到此为止啦,祝您变得更强
在这里插入图片描述
10.想说的话

实不相瞒,写的这篇博客写了六个小时(加上自己学习和纸质笔记,共九小时吧),很累希望大佬支持

在这里插入图片描述

道阻且长 行则将至
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

http://www.ppmy.cn/ops/111409.html

相关文章

开源反向代理工具-Nginx

Nginx简介 NGINX 是一种高性能的反向代理服务器、负载均衡器和 HTTP 缓存服务器。它的设计初衷是为了应对高并发和低资源消耗&#xff0c;尤其适合处理大量的短连接请求。NGINX 的高效性能来自其事件驱动架构和异步非阻塞的处理方式。 Nginx工作原理 1.事件驱动模型 Nginx使用…

Qt常用控件——QDateTimeEdit

文章目录 QDateTimeEdit核心属性及信号时间计算器 QDateTimeEdit核心属性及信号 QDateEdit作为日期的微调框QTimeEdit作为时间的微调框QDateTimeEdit作为时间日期的微调框 它们的使用方式都是类似的&#xff0c;本篇以QDateTimeEdit作为示例 核心属性&#xff1a; 属性说明…

【TS】TypeScript配置详解【三】

文章目录 简介根字段filesincludeexcludereferences CompilerOptions&#xff08;编辑器选项&#xff09;Type Checking&#xff08;类型检查&#xff09;allowUnreachableCode&#xff08;允许无法访问的代码&#xff09;allowUnusedLabels&#xff08;允许未使用的标签&#…

Java应用压测工具JMeter

目录 1、下载JMeter 2、配置环境变量 3、配置语音 4、使用 1、下载JMeter Apache JMeter - Apache JMeter™ 千万别下载这个&#xff0c;会报错、 千万别下载这个&#xff0c;会报错、 千万别下载这个&#xff0c;会报错 下载这个&#xff0c;失败多下载几次 2、配置环…

智慧体育场馆:科技引领未来运动体验

在当今数字化时代&#xff0c;​智慧体育场馆​的建设不仅提升了观众、运动员和管理者的体验质量&#xff0c;也为体育产业注入了新的活力和创新。通过整合先进科技和智能系统&#xff0c;体育场馆能够实现更高效的运营管理、提升赛事体验以及优化资源利用。以下是古河云科技构…

计算机二级office操作技巧——Excel篇

文章目录 函数公式总结写在前面五大基本函数sum求和函数average求平均函数max求最大值函数min求最小值函数count求个数函数 rank排名函数if逻辑判断函数条件求个数函数countif单条件求个数函数countifs多条件求个数函数 条件求和函数sumifs多条件求和函数sumproduct乘积求和函数…

CMS之Wordpress建设

下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…

【计算机网络 - 基础问题】每日 3 题(五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…