ARM Linux 开发基础技能实战演练
主要介绍 Linux 应用开发基础技能,包括以下五方面的内容:
1、Git 的使用
2、面向对象 C
3、文件读写
4、进程与线程
5、TCP、UDP 通信基础
1 关于版本管理系统
记录文件内容变化,以便将来查阅特定版本情况
2 Git与其他版本管理系统的异同

3 Git的历史

基于Ubuntu
1 安装以及配置

2 获取仓库

3 记录每次变更

4 远程仓库操作

命令示例如下

1 基于文件快照的记录方式

2 Git的分支



3 分布式的Git

司令官与副官工作流适用于更加大型的组织
blessed repository = 项目仓库 lieutenant = 副职官员
1 使用git本地仓库管理 Hello world程序开发
演示新建helloworld文件,运行成功,提交;
演示复制写文件的代码文件,运行成功,提交;
演示使用git checkout回退到helloworld,运行成功;再使用git checkout master恢复到最新版本;使用git reset彻底回到某个历史版本,丢弃之后的更改
2 在自己电脑搭建Git服务器
新建用户、配置git仓库
3 使用git进行多人的分工协作开发
在同一台电脑使用两个不同用户开发 Hello world
1 类与对象


2 封装、继承与多态



1 类的实现

2 封装的实现

3 继承的实现

派生类定义中必须把基类放在最前面,这样方便将派生类强制类型转换为基类
4 多态的实现

并不是真的要画图,只是用来展示程序框架


黑色箭头为继承,蓝色箭头为使用【Canvas只能管理Shape,不认识Circle,后续代码需要强制转换】
画图程序流程图如下

源代码如下
main.c

canvas.h

canvas.c


shape.h

shape.c

circle.h

circle.c

运行效果

1 文件的概念

2 Linux系统中文件的类别

3 文件描述符

4 文件指针

1 系统调用常用函数

原子读写主要用于多线程
函数原型如下

2 标准IO库常用函数

函数原型如下

3 文件描述符与文件指针的关系

1 系统调用文件读写实例
将一个文件逐个字符读出并写入另外一个文件

O_TRUNC若文件已存在,则截断为0byte
O_CREAT若文件不存在,则新建文件
运行效果如下

2 标准IO库文件读写实例


3 系统调用与标准IO库的比较
使用time命令对比执行时间

视频提到POSIX,找到一篇文章,存在这里
posix是什么都不知道,还好意思说你懂Linux?
1 什么是进程

中括号的内容是内核自动启动的

2 进程与程序的关系

3 父进程与子进程的关系

1 什么是线程
linux将线程称之为【轻量级进程LWP】
下图中同一个进程PID23044有多个线程LWP

2 进程与线程的关系



3 线程的同步

1 查看系统中的进程和线程

-e列出系统所有进程、-o列出属性值、pid进程ID、comm进程名称、cmd进程启动方式
ppid parent process父进程ID

RTPRIO优先级、NI nice优先级的权重 -20~19、pcpu占用CPU的百分比、
2 进程的创建


3 线程的创建和同步



线程同步

全局变量sum加锁
1 TCP/IP背景和介绍



2 基本概念介绍

端口号用于区分同一台PC机内运行的不同软件【即服务】

1 传输层协议

2 UDP概述

3 UDP报文

1 TCP概述

2 TCP报文

3 连接的建立和断开


4 TCP可靠传输的实现

1 IP数据报

2 IP地址分类

3 子网划分

4 路由选择

1 UDP echo实例


在同一台电脑先运行server,随后运行client端,client发信息,收到server回复。
2 TCP echo实例

