Linux C编程一站式学习 | ||
---|---|---|
下一页 |
版权 © 2008, 2009 宋劲杉, 北京亚嵌教育研究中心
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being 前言, with no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in 附录 C, GNU Free Documentation License Version 1.3, 3 November 2008.
2009.3.24
修订历史 | |
---|---|
修订 0.6 | 2009.3.24 |
添加了GFDL许可证,正式网络发布。第三部分还很粗糙,错误也有不少,有待改进。第一部分和第二部分已经比较成熟,第二部分还差三章没写。 |
目录
-
历史
前言
I. C语言入门
- II. C语言本质
- III. Linux系统编程
- A. 字符编码
- B. 编译开发工具小结
- C. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引
插图清单
-
1.1.
编译执行过程
1.2.
解释执行过程
2.1.
在纸上表示变量
3.1.
函数调用的执行顺序
5.1.
函数的分层设计
5.2.
factorial(3)的调用过程
7.1.
复数
7.2.
结构体传参
7.3.
数据抽象
8.1.
数组count
8.2.
字符串
8.3.
多维数组
11.1.
扑克牌的插入排序
11.2.
Θ-notation
11.3.
1/2-3/n
11.4.
归并排序调用过程
12.1.
用堆栈实现倒序打印
12.2.
深度优先搜索
12.3.
广度优先搜索的队列数据结构
12.4.
广度优先搜索
12.5.
环形队列
14.1.
1-bit Full Adder
14.2.
4-bit Ripple Carry Adder
15.1.
整数常量的类型
17.1.
邮箱的地址
17.2.
访问内存读数据的过程
17.3.
设备
17.4.
物理地址
17.5.
虚拟地址
17.6.
处理器模式
17.7.
Memory Hierarchy
18.1.
ELF文件
18.2.
文件和加载地址的对应关系
19.1.
函数栈帧
19.2.
gcc命令的选项
19.3.
C程序的链接过程
19.4.
数组的存储布局
19.5.
结构体的存储布局
19.6.
Bit Field的存储布局
20.1.
多目标文件的链接
20.2.
为什么要包含头文件而不是
.c
文件
20.3.
间接寻址
20.4.
进程地址空间
20.5.
进程地址空间是独立的
20.6.
不连续的PA可以映射为连续的VA
20.7.
换页
22.1.
Makefile的依赖关系图
23.1.
指针的基本概念
23.2.
把char *
指针的值赋给int *
指针
23.3.
指针与数组
23.4.
argv
指针数组
23.5.
C语言类型总结
23.6.
链表
24.1.
strcpy(3)
24.2.
strcpy(3)
24.3.
strcpy(3)
24.4.
strcpy(3)
24.5.
简单的malloc
和free
实现
24.6.
myprintf
函数的参数布局
25.1.
C标准库的I/O缓冲区
28.1.
库函数与系统调用的层次关系
28.2.
文件描述符表
28.3.
重定向之后的文件描述符表
28.4.
mmap函数
29.1.
文件系统的表示和存储
29.2.
ext2文件系统的总体存储布局
29.3.
超级块
29.4.
块组描述符
29.5.
根目录的inode
29.6.
根目录的数据块
29.7.
数据块的寻址
29.8.
VFS
29.9.
dup/dup2示例程序
30.1.
fork/exec
30.2.
进程地址空间
30.3.
环境变量
30.4.
fork
30.5.
exec函数族
30.6.
进程间通信
30.7.
管道
31.1.
Shell脚本的执行过程
33.1.
信号在内核中的表示示意图
33.2.
信号的捕捉
33.3.
不可重入函数
34.1.
终端设备模块
34.2.
终端缓冲
34.3.
伪终端
34.4.
Session与进程组
35.1.
并行访问冲突
35.2.
哲学家问题
36.1.
TCP/IP协议栈
36.2.
TCP/IP通讯过程
36.3.
TCP/IP数据包的封装
36.4.
跨路由器通讯过程
36.5.
Multiplexing过程
36.6.
以太网帧格式
36.7.
ARP数据报格式
36.8.
IP数据报格式
36.9.
IP地址类
36.10.
loopback设备
36.11.
UDP段格式
36.12.
TCP段格式
36.13.
TCP连接建立断开
36.14.
滑动窗口
37.1.
sockaddr数据结构
37.2.
TCP协议通讯流程
37.3.
建立连接的过程
37.4.
关闭连接的过程
37.5.
UDP通讯流程
A.1.
ASCII码表
A.2.
IBM的扩展ASCII码表
A.3.
ISO-8859-1
表格清单
-
1.1.
同一个语句的三种表示
2.1.
C标准规定的转义字符
4.1.
关系运算符和相等性运算符
4.2.
AND的真值表
4.3.
OR的真值表
4.4.
NOT的真值表
10.1.
gdb基本命令1
10.2.
gdb基本命令2
10.3.
gdb基本命令3
14.1.
XOR的真值表
14.2.
NAND的真值表
14.3.
NOR的真值表
14.4.
1-bit Full Adder的真值表
15.1.
ILP32和LP64
15.2.
如何做类型转换
17.1.
Memory Hierarchy
18.1.
目标文件的布局
18.2.
一个4字节整数的字节序
20.1.
Storage Class关键字对函数声明的作用
20.2.
Storage Class关键字对变量声明的作用
20.3.
Man Page的Section
24.1.
传入参数示例:
void func(const unit_t *p);
24.2.
传出参数示例:void func(unit_t *p);
24.3.
Value-result参数示例:void func(unit_t *p);
24.4.
通过参数分配内存示例:void alloc_unit(unit_t **pp);
void free_unit(unit_t *p);
24.5.
返回指向已分配内存的指针示例:unit_t *func(void);
24.6.
动态分配内存并返回指针示例:unit_t *alloc_unit(void);
void free_unit(unit_t *p)
;
24.7.
回调函数示例:void func(void (*f)(void *), void *p);
25.1.
25.2.
25.3.
29.1.
目录中的文件类型编码
31.1.
通配符
31.2.
测试命令
31.3.
带与、或、非的测试命令
31.4.
常用的位置参数和特殊变量
32.1.
字符类
32.2.
数量限定符
32.3.
位置限定符
32.4.
其它特殊字符
32.5.
常用的sed命令
32.6.
awk常用的内建变量
33.1.
how参数的含义
36.1.
划分子网的例子1
36.2.
划分子网的例子2
37.1.
client和server的socket状态
范例清单
-
1.1.
Hello World
2.1.
带更多注释的Hello World
3.1.
在C语言中使用数学函数
3.2.
最简单的自定义函数
3.3.
较简单的自定义函数
3.4.
带参数的自定义函数
3.5.
全局变量
3.6.
作用域
3.7.
验证局部变量存储空间的分配和释放
4.1.
switch语句
4.2.
缺break的switch语句
5.1.
distance函数
6.1.
求1-100的素数
6.2.
用嵌套循环求1-100的素数
6.3.
打印小九九
7.1.
定义和访问结构体
8.1.
生成并打印随机数
8.2.
多维字符数组
8.3.
剪刀石头布
9.1.
缺少缩进和空白的代码
10.1.
函数调试实例
10.2.
断点调试实例
10.3.
观察点调试实例
10.4.
段错误调试实例一
10.5.
段错误调试实例二
11.1.
插入排序
11.2.
归并排序
11.3.
线性查找
11.4.
折半查找
11.5.
带有测试框架的折半查找
12.1.
用堆栈实现倒序打印
12.2.
用递归实现倒序打印
12.3.
用深度优先搜索解迷宫问题
12.4.
用广度优先搜索解迷宫问题
18.1.
最简单的汇编程序
18.2.
求一组数的最大值的汇编程序
19.1.
研究函数的调用过程
23.1.
打印命令行参数
25.1.
用fputc/fget读写文件和终端
28.1.
汇编程序的Hello world
28.2.
阻塞读终端
28.3.
非阻塞读终端
28.4.
非阻塞读终端和等待超时
28.5.
用fcntl改变File Status Flag
29.1.
递归列出目录中的文件列表
29.2.
dup和dup2示例程序
30.1.
打印环境变量
30.2.
修改环境变量
30.3.
fork
30.4.
upper
30.5.
wrapper
30.6.
waitpid
30.7.
管道
31.1.
简单的Shell脚本
33.1.
alarm
33.2.
mysleep
34.1.
查看终端对应的设备文件名
34.2.
创建守护进程
下一页 | ||
历史 |