Linux应用程序开发教程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux应用程序开发教程目录

1. C语言基础

1.1. 数据类型

1.2. 关键字

1.3. 变量等级

1.4. 特殊字符的表示方法:

1.5. 格式化字符串

1.6. 指针与数组

1.7. 结构体

1.8. typedef--自定义类型名

1.9. 函数和宏

1.10. ANSI标准头文件

2. 预处理

3. 使用GCC编译程序

4. 使用gdb调试程序

5. Linux程序开发基础

5.1. 路径

5.2. 库文件

5.3. 预处理

5.4. 系统调用(system call)

6. 文件处理

7. Linux环境编程

7.1. 参数选项

7.2. 环境变量

7.3. 时间

7.4. 临时文件

7.5. 用户信息

7.6. 日志信息

8. 进程

8.1. 进程状态

9. 串口编程

9.1. 常用函数

9.2. 设置串口属性

9.3. c_iflag输入标志说明

9.4. c_oflag输出标志说明

9.5. c_cflag控制模式标志说明

9.6. c_cc[]控制字符说明

9.7. c_lflag本地模式标志说明

9.8. 下面介绍一些常用串口属性的设置方法。

10. 安全

10.1. 内核漏洞介绍

11. 数据结构(Data Structure)

11.1. 基础概念

11.2. 线性数据结构

12. 网络编程

12.1. TCP/IP协议分析

12.2. 入门示例程序

13. 存储器寻址

14. 设备驱动程序开发

15. 字符设备驱动程序

15.1. 设备号

15.2. 设备号的分配和释放

15.3. 重要的数据结构

15.4. 读和写

16. PCI设备

17. 内核初始化优化宏

18. 访问内核参数的接口

19. 内核初始化选项

20. 内核模块编程

20.1. 入门

20.2. 为模块添加描述信息

20.3. 内核模块处理命令介绍

21. 网络子系统

21.1. sk_buff结构

21.2. sk_buff结构操作函数

21.3. net_device结构

21.4. 网络设备初始化

21.5. 网络设备与内核的沟通方式

21.6. 网络设备操作层的初始化

21.7. 内核模块加载器

21.8. 虚拟设备

21.9. 8139too.c源码分析

21.10. 内核网络数据流

22. 备忘录

List of Tables

1.1. 特殊字符的表示方法

Chapter 1. C语言基础Table of Contents

1.1. 数据类型

1.2. 关键字

1.3. 变量等级

1.4. 特殊字符的表示方法:

1.5. 格式化字符串

1.6. 指针与数组

1.7. 结构体

1.8. typedef--自定义类型名

1.9. 函数和宏

1.10. ANSI标准头文件

Linux是使用C语言开发的,基于Linux平台的应用程序开发,C语言是首选的开发语言。本章记录C语言的基本概念和基础知识。

1.1. 数据类型

整数类型(int),

各种整数数制表示法:

•ddd,十进制表示法,d为0--9的整数,但不能以0开头。如:123,345。

•0ooo,八进制表示法,以0(数字0)开头,o为0--7的整数。如:010(八进制)=8(十进制),014(八进制)=12(十进制)。

•0xhhh,十六进制表示法,以0x或0X开头,h为0--9、A、B、C、D、E、F。如:0x10(十六进制)=16(十进制),0xA(十六进制)=10(十进制)。

•以L或l结尾的数表示长整数(long int),编译器会以32位空间存放此数字,但GCC默认是以32位存放整数,所以此表示法在Linux下没什么作用。

1.2. 关键字

关键字是C语言本身保留使用的,不能用于变量和函数名。

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

1.3. 变量等级

•auto,内部变量,在函数内部声明。只能在函数内部使用,它的生命周期从调用函数开始,到函数执行完时消失。内部变量以堆栈存放,必须在函数执行时才会存在,这种方式称为声明。auto 可省略。如:

auto int i = 0;

/* 可写成int i = 0; */

内部变量的优缺点:

o内部变量只在函数内有效,能提高函数的安全。

o内部变量在函数结束时消失,不会长期占用内存空间,能提高内存的利用率。

o内部变量的缺点是生命周期短,函数运行结束后不能保留。

•static auto,内部静态变量,在函数内部定义,auto也可省略。内部静态变量以固定地址存放,编译时就已分配置内在空间,这种方式称为定义。由于有固定地址,函静态变量不会随函数的结束而消失。static变量会一直保存在内存空间中,当函数再次执行时,上次保留的使用静态变量可以继续使用。如:

static int i = 0;

•extern,外部变量,是在函数外定义的变量,可被多个函数存取。在外部变量定义覆盖范围之内的函数内可以自由使用外部变量。不在外部变量定义覆盖范围之内的函数要使用外部变量就要先使用extern关健字来声明外部变量。

int i; /* 外部变量定义,在main函数外 */

int main(void)

{

i = 1; /* main()函数位于外部变量i定义的下面,不用

声明可直接使用 */

printf("%d\n", i);

}

不在外部变量定义覆盖范围之内的函数要使用外部变量就要先使用extern关健字来声明外部变量。

int main(void)

{

extern int i; /* 外部变量i在main()函数之后定义,需用extern关键字声明后才能使用 */

i = 1;

printf("%d\n",i);

}

int i;

...

相关文档
最新文档