新用户注册入口 老用户登录入口

[转载]【Linux初阶】Linux小程序 - 进度条

文章作者:转载 更新时间:2023-12-26 19:04:57 阅读数量:99
文章标签:Linux初阶进度条基础指令vim编辑器gcc编译工具
本文摘要:本文为【Linux初阶】系列文章,介绍了如何运用Linux基础指令、vim编辑器编写源码,并结合gcc编译工具与make/makefile构建系统,完成一个简单的Linux进度条小程序。作者详细解析了main.c、mycode.h和mycode.c三个源文件的功能与实现细节,其中利用宏定义(如NUM、s_num)实现了进度条样式的灵活切换。在makefile中通过-DN=1传递预处理器宏定义,以控制进度条风格。最后展示了使用make编译链接的过程及运行效果。该教程实例充分展现了Linux环境下综合开发工具的协同工作能力。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/Captain_ldx/article/details/127739163。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

  🌟hello,各位读者大大们你们好呀🌟

🍭🍭系列专栏:【Linux初阶

✒️✒️本篇内容:综合使用Linux基础指令vim编辑器、gcc工具、make/makefile编译工具完成Linux小程序 - 进度条

🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-

📡📡同期Linux工具文章:【Linux初阶】vim工具的使用 

                                           【Linux初阶】Linux项目自动化构建工具-make/Makefile 


touch(创建)四个文件(main.c,mycode.h,mycode.c,makefile)

main.c

  1 #include "mycode.h"2 3 int main()4 {5     ProncessOn();                                                                                                                       6     //printf("hhhh\n"); - 测试使用7     return 0;8 }

【注意】通常我们使用make/makefile工具时,应该要分布测试程序的可执行情况


mycode.h 

  1 #pragma once 2 3 #include <stdio.h>4 #include <string.h>//初始化需要使用5 #include <unistd.h>//休眠需要使用6 7 #define NUM 1018 #define s_num 5                                                                                                                         9 10 extern void  ProncessOn();


mycode.c

    1 #include "mycode.h"2 3 char style[s_num] = {'-', '#', '.', '>', '+'};//不同进度条风格选择4 5 extern void  ProncessOn()6 {7     int cnt = 0;8     char bar[NUM];9     memset(bar, '\0', sizeof(bar));//初始化10 11     const char *lable = "l\\-/";//显式图形12 13     while(cnt<=100)14     {15         printf("[%-100s][%d%%][%c]\r", bar, cnt, lable[cnt%4]);//-\r回到首行,%-100使中括号再100位置上(右对齐)16         fflush(stdout);//刷新
E> 17         bar[cnt++] = style[N]; //这里的宏再makedile中定义                                                                                                       18         //sleep(1);19         usleep(50000);  //5s/100==0.05==5000020     }21 22     printf("\n");23 }
  • 使用头文件中的定义宏 s_num,便于修改
  • 使用 style[N] - 外接的定义宏N,便于修改和使用
  • \r - 回到行首,每次循环需要打印不同的字符串
  • 使用 fflush(stdout) 刷新之后,才不会形成“代码山”式的叠加

makefile

修改定义宏可以更换不同格式

  1 mycode:mycode.c main.c2     gcc mycode.c main.c  -o mycode -DN=1  #这里用-D定义宏N=1                                                                                              3 4 .PHONY:clean5 clean:6     rm -f mycode


make编译

[ldx@VM-12-11-centos myfile]$ make
gcc mycode.c main.c  -o mycode -DN=1
[ldx@VM-12-11-centos myfile]$ ./mycode
[####################################################################################################][100%][l]


 


 🌹🌹Linux小程序 - 进度条大概就讲到这里啦,博主后续会继续更新更多Linux操作系统的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪   

本篇文章为转载内容。原文链接:https://blog.csdn.net/Captain_ldx/article/details/127739163。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
makefile在软件开发中,makefile是一种描述项目构建规则的文本文件,它定义了源代码文件之间的依赖关系以及如何生成可执行文件或库文件。在本篇文章的语境下,作者创建了一个makefile文件来指导gcc编译器如何编译链接main.c和mycode.c这两个源文件,最终生成名为mycode的可执行程序,并通过-DN=1传递宏定义参数,实现进度条样式的灵活切换。
gcc工具GCC(GNU Compiler Collection)是一个强大的开源编译器集合,支持包括C、C++、Objective-C等多种编程语言的编译工作。文中提到的gcc工具就是在Linux环境下使用的GCC编译器,用于将程序员编写的C语言源代码转换成能在目标机器上运行的可执行文件。在本例中,gcc被用来编译链接main.c和mycode.c两个文件以产生进度条小程序。
fflush(stdout)在C语言标准I/O库中,fflush()函数是一个用于刷新流(stream)缓冲区的操作。这里的“stdout”是标准输出流,通常指向显示器。当调用fflush(stdout)时,会强制把标准输出缓冲区中的内容立即输出到屏幕,而不是等待缓冲区满或者遇到换行符才进行输出。在文章所展示的Linux进度条小程序中,使用fflush(stdout)确保每次循环更新进度条时,新的进度信息能够立刻显示出来,避免形成累积叠加的“代码山”,从而实现动态、实时的进度显示效果。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在学习了如何综合使用Linux基础指令、vim编辑器、gcc工具以及make/makefile编译工具完成一个简单的Linux小程序后,您可能对Linux环境下开发实践有了更深的理解。进一步提升Linux编程技能,您可以关注以下延伸阅读内容:
1. Linux内核最新动态:Linux内核是操作系统的核心,时刻关注其最新进展和特性更新能帮助开发者掌握最新的系统资源管理与优化技术。例如,近期Linux 5.16版本发布,引入了诸多性能改进和新硬件支持,对于嵌入式开发和服务器运维具有重要价值。
2. Vim8/Neovim高级功能探索:虽然本文介绍了vim的基本使用,但vim的高效能编辑功能远不止于此。Vim8及Neovim等现代版本增加了异步任务处理、插件管理等功能,深入学习这些高级特性将极大提高您的代码编辑效率。
3. GCC工具链进阶教程:GCC除了基本的编译链接功能外,还提供了丰富的优化选项和警告级别设定。了解并熟练运用这些功能有助于编写出更高效、更安全的C/C++程序。同时,GCC也支持多种语言,如Fortran、Ada等,拓宽编程视野。
4. Makefile最佳实践与自动化构建工具对比:尽管make/makefile在项目构建中扮演着重要角色,但现代项目管理工具如CMake、Meson等因其跨平台性和易用性逐渐受到青睐。了解这些工具的优势和应用场景,结合实际需求选择合适的构建解决方案。
5. Linux进程间通信(IPC)机制详解:在Linux编程实战中,进程间的通信和同步往往是关键环节之一。深入理解管道、消息队列、共享内存、信号量等IPC机制,能够帮助您设计出更为复杂且高效的多进程应用程序。
通过以上延展阅读,读者不仅能够巩固已学知识,还能紧跟技术发展潮流,不断提升自身在Linux环境下的软件开发能力。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
chmod +x script.sh - 给脚本添加执行权限。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
HessianRPC在高负载下服务降级与熔断器模式保障用户体验 05-01 jQuery和TweenMax简单实用的水平手风琴特效 01-20 jquery选择国家下拉列表框插件 01-21 Sqoop在Hadoop集群中的数据传输机制及数据库迁移、收集与备份恢复应用实践 12-23 简约渔具批发牧渔企业类网站前端模板下载 11-09 基于bootstrap功能齐全的jQuery进度条插件 10-20 简约大气男性护肤产品HTML5网站模板 09-22 宽屏大气机械设备制造公司网站模板 08-13 演讲会门票销售网站模板下载 07-30 本次刷新还10个文章未展示,点击 更多查看。
经典响应式投资理财企业前端模板 06-26 基于Redis的键值对存储实现用户阅读状态跟踪与管理 06-24 Netty框架中CannotFindServerSelection异常:服务器地址配置错误与通道类型匹配详解 06-18 简洁设计公司响应式网站模板下载 05-06 绿色苗木草坪种植绿化类企业前端CMS模板下载 04-30 怎么在cmd开启mysql服务 04-15 保洁公司家庭保洁服务网站模板 03-26 SpringCloud微服务中分布式锁的死锁问题与状态一致性维护:避免循环依赖、公平锁及超时重试机制在Redisson中的实践运用 03-19 HBase性能测试与RegionServer配置、架构及数据模型调优实践:关注响应时间、并发处理能力与BlockCache优化 03-14 jquery控制radio触发事件 02-15 简约HTML5软件营销业务公司网站模板 02-09
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"