Linux学习笔记 二

 写一个进度条

\r&\n

开始的开始,回车并不是一个直观的东西。转换成指令是两个,第一步另起一行,第二步回到本行起始处,所以回车键也就是一个拐弯的按键。

\r:回车

\n:换行

缓冲区

我们把整个输出过程比做一把枪,写输出内容就是装弹,真正输出就是发射子弹,而其中的枪膛就是缓冲区。假设以下情况。

printf("1\r");

马上要输出的时候,子弹卡膛了,输出不了,难受死。因为\r把光标回调了,只能输出光标之前的内容,而后面的就留在缓冲区了,但是这里加一个函数fflush(stdout)就可以了。意思就是缓冲区内容全输出后清理。

这样,就可以写出一个倒计时了。

 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 
void process()
{
  char bar[101];
  memset(bar,'\0',sizeof(bar));
  int i=0;
  while(i <= 100)
 {
     printf("[%s]\r",bar);
     fflush(stdout);
     bar[i++] = '#';
     sleep(1);
 }
}
int main()
{                                                                                                                                                                                    
   process();
   return 0;
}

知道上面的倒计时再结合所学的C语言知识就能写出上面的进度条啦。

gdb的使用(调试)

先来一张图。

 当我们gdb开始调试可执行文件时,发现系统提示没有调试信息,第一个疑点就来了。原因其实也写在上面了,因为可执行程序出来后,也直接被优化成了release版本,并不是debug呢。

如图所示,我们只需要在编译的时候加上-g就可以了。

 当输入以上指令时,可以查看debug版本的可调式信息哦。

接下来说下gdb的调试指令

第一个:查看代码,l 0 ,意思就是从第零行开始查看。

 一直上传图片不好看,剩下的推荐大家自行尝试,良处多多呦。

第二个:直接执行程序,r 。

第三个:打断点,b 行号,info b,查看所有断点,d 断点序号,删除断点。

圈里的就是断点序号,删除只能按照序号删除。对比两次info后第一个断点信息,方框内信息表示该断点已经执行一次了。 

第四个:disable breakpoint 断点序号 关闭断点,enable breakpoint 断点序号 开启断点。

第五个:n逐过程调试,s逐语句调试。

第六个:p 变量,查看当前变量的值。

第七个:display 变量,常显示该变量数值,undisplay 变量,关闭。

第八个:until 行号,在函数内,进行跳转,执行完该区间代码。

第九个:finish,立即执行完当前函数并且停下。

第十个:c,从一个断点处,执行到下一个断点处。

第十一个:set var 变量名 = x,设置某一个变量为特定值。

第十二个:bt,查看调用栈。

第十三个:quit,退出。 

调试器核心工作是找到问题,不是解决问题。

所有查看类型的指令,不影响实际调试

冯诺依曼体系结构

 我认为对于现在所学的知识,能有一个浅显的认知就可以,因为一旦深入,就像泥潭一样,深深陷入久拔不出。深入之后涉及到的知识太多,我们就把该层次能学到的知识学到了就可以了。

在硬件方面(输入设备就是键盘什么的,存储器就是内存,磁盘等等),所遵循的规则就是这套体系结构,红色部分是所谓的数据流动,就是上半部分的凹字,就是这样的凹,把每个用户链接了起来。然后就是读图咯,用户通过输入进行输出时,会有运算器转换存入存储器,期间控制器控制相关行动,最后输出。

一台计算机,最粗略的分类就是软硬件两类。在硬件有其相应的管理和数据流动,软件也是,然后不可缺少的,就是软硬件的链接:操作系统。

操作系统

计算器不能没有操作系统,就像西方不能失去耶路撒冷。

对下仔仔细细的管理好各种各样的数据,简单来说就是描述数据,然后管理。

对上好好的服务用户,对用户的需求分装出各种接口(只能是接口,不能完全开放,因为“群众里面有坏人”)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值