书籍详情
linux高级程序设计
作者:杨宗德、邓玉春、曾庆华 编著
出版社:人民邮电出版社
出版时间:2008-01-01
ISBN:9787115171696
定价:¥49.00
购买这本书可以去
内容简介
《linux高级程序设计(附光盘)》以2.6内核的Linux操作系统为开发平台、GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux下C语言开发环境、C语言开发工具、内存管理、ANSI C文件I/O管理、POSIX文件I/O管理、文件及目录管理、进程管理、UNIX进程间通信机制、System V进程间通信、多线程编程、线程间通信机制和Linux Socket网络编程相关内容及实例开发。《linux高级程序设计(附光盘)》内容丰富、紧扣应用,所列代码和实例都来源于具体的应用程序。《linux高级程序设计(附光盘)》适合从事Linux系统编程工作的人员阅读,也适合从事嵌入式Linux开发的人员阅读。
作者简介
暂缺《linux高级程序设计》作者简介
目录
第1章 Linux下C语言开发环境 1
1.1 Linux操作系统概述 2
1.1.1 Linux操作系统简介 2
1.1.2 GNU/Linux简介 3
1.1.3 相关术语介绍 3
1.2 Linux开发初步 5
1.2.1 Linux下C程序开发标准 5
1.2.2 库函数和系统调用 7
1.2.3 在线文档介绍 9
1.2.4 获取错误信息 10
1.2.5 Linux应用程序示例 11
1.3 Linux内核及库文件管理 12
1.3.1 Linux内核目录结构 13
1.3.2 使用Linux系统库文件 14
1.3.3 创建静态库和共享库 17
1.4 Linux下编码风格 19
1.4.1 GNU编码规范 19
1.4.2 Linux内核编码规范 20
第2章 Linux下C语言开发工具 23
2.1 Linux开发的基本工具 24
2.1.1 Vim编辑器 24
2.1.2 Emacs编辑器 26
2.1.3 tar打包器 27
2.1.4 Linux编程常用命令及工具 28
2.2 GCC/G++编译器 36
2.2.1 GCC/G++简介 36
2.2.2 Glibc库 43
2.2.3 GCC不同编译选项对程序的影响 45
2.3 make工具及makefile文件 49
2.3.1 make工具简介 49
2.3.2 makefile常用规则 52
2.4 GDB调试工具 54
2.4.1 GDB调试工具简介 54
2.4.2 GDB演示示例 55
2.4.3 GDB调试器常用语法 56
2.5 GCC程序开发过程实例 58
2.6 自动编译调试工具 61
2.6.1 Autoconf/Automake工具组简介 61
第3章 内存管理及相关工具 69
3.1 内存管理基本概念 70
3.1.1 C程序内存分配 70
3.1.2 栈和堆的区别 72
3.1.3 Linux数据类型大小 73
3.1.4 数据存储区域实例 75
3.2 内存管理函数 77
3.2.1 malloc/free函数 77
3.2.2 realloc——更改已经配置的内存空间 80
3.2.3 其他内存管理函数calloc和alloca 82
3.3 常用Linux内存管理及调试工具 82
3.3.1 mcheck函数 83
3.3.2 Valgrind内存检测工具 84
第4章 ANSI C文件管理 89
4.1 文件基本概念及文件指针 90
4.1.1 文件基本概念 90
4.1.2 文件指针 91
4.2 ANSI C标准文件I/O操作 93
4.2.1 缓冲区类型 93
4.2.2 打开关闭文件 96
4.2.3 读写文件流 98
4.2.4 文件流定位 102
4.2.5 格式化输入输出函数 103
第5章 POSIX标准文件I/O管理 107
5.1 Linux系统下文件类型及属性 108
5.1.1 Linux文件模式 108
5.1.2 Linux文件类型 108
5.1.3 文件权限修饰位 111
5.1.4 文件访问权限位 112
5.1.5 文件描述符 113
5.2 POSIX标准下文件I/O管理 114
5.2.1 创建/打开/关闭文件 114
5.2.2 文件控制fcntl 117
5.2.3 lockf文件控制 121
5.2.4 锁定/解锁文件flock 122
5.2.5 读/写文件内容 124
5.2.6 文件定位 127
第6章 Linux文件管理及目录操作 129
6.1 Linux文件系统管理 130
6.1.1 Linux下VFS虚拟文件系统 130
6.1.2 ext2文件系统结构 131
6.1.3 超级块结构 131
6.1.4 dentry结构 132
6.1.5 Inode块 133
6.1.6 数据块及文件 135
6.2 Linux文件及目录管理操作 136
6.2.1 读取文件属性 136
6.2.2 修改文件权限操作 138
6.2.3 修改掩码umask 140
6.2.4 修改文件的拥有者及组 141
6.2.5 添加删除目录 142
6.2.6 连接文件管理 142
6.2.7 当前目录操作 143
第7章 Linux进程管理与程序开发 147
7.1 进程环境及进程属性 148
7.1.1 程序及进程环境 148
7.1.2 进程的基本属性 149
7.2 Linux进程控制 153
7.2.1 创建进程 153
7.2.2 运行新进程 158
7.2.3 等待进程结束 160
7.2.4 退出进程 166
7.2.5 修改进程用户相关信息 168
7.2.6 复制进程 172
7.3 Linux进程调度 173
7.3.1 进程状态 173
7.3.2 Linux常用调度算法 174
7.3.3 调度管理函数 176
第8章 进程间通信——管道和信号 183
8.1 进程通信——无名管道 184
8.1.1 无名管道概念 184
8.1.2 无名管道管理及应用 184
8.2 进程通信——有名管道FIFO 190
8.2.1 有名管道概念 190
8.2.2 有名管道管理及应用 191
8.3 信号中断处理 194
8.3.1 信号的基本概念 194
8.3.2 信号基本操作及应用 197
第9章 System V进程间通信 209
9.1 System VIPC基础 210
9.1.1 key值和ID值 210
9.1.2 拥有者及权限 211
9.2 消息队列 212
9.2.1 消息队列IPC原理 212
9.2.2 Linux消息队列管理 214
9.2.3 消息队列应用实例 217
9.3 信号量通信机制 220
9.3.1 信号量IPC原理 220
9.3.2 Linux信号量管理操作 221
9.3.3 信号量应用实例 226
9.4 共享内存 229
9.4.1 共享内存IPC原理 229
9.4.2 Linux共享内存管理 231
9.4.3 共享内存处理应用示例 233
9.4.4 共享内存处理应用示例 235
第10章 Linux多线程编程 239
10.1 Linux线程概述 240
10.1.1 线程基本概念 240
10.1.2 线程基本应用概述 240
10.1.3 进程/线程应用对比 243
10.2 Linux线程基本操作 244
10.2.1 创建线程 244
10.2.2 退出线程 245
10.2.3 等待线程 245
10.2.4 取消线程 246
10.2.5 线程基本操作应用实例 247
10.3 线程属性控制 249
10.3.1 初始化线程属性对象 250
10.3.2 获取/设置线程属性 251
10.3.3 线程属性控制实例 255
10.4 线程调度 257
10.4.1 调度策略基本概念 257
10.4.2 调度策略管理 258
10.4.3 线程调度策略示例程序 259
第11章 线程间通信机制 263
11.1 互斥锁通信机制 264
11.1.1 互斥锁基本原理 264
11.1.2 初始化或损坏互斥锁 265
11.1.3 锁定/非阻塞锁定一个互斥锁 266
11.1.4 解锁互斥锁 267
11.1.5 初始化或破坏互斥锁属性对象 267
11.1.6 互斥锁使用范围 268
11.1.7 互斥锁kind属性设置 269
11.1.8 互斥锁应用实例 269
11.2 条件变量通信机制 271
11.2.1 条件变量基本原理 271
11.2.2 初始化或损坏条件变量 273
11.2.3 取消阻塞一个或所有等待条件变量的线程 274
11.2.4 等待或定时等待条件变量 274
11.2.5 初始化或破坏条件变量属性对象 276
11.2.6 读取/设置条件变量争用范围 277
11.2.7 条件变量应用实例 277
11.3 读写锁通信机制 281
11.3.1 读写锁基本原理 281
11.3.2 初始化或损坏读写锁 282
11.3.3 解除读写锁定 283
11.3.4 锁定或非阻塞锁定用于读取的读写锁 283
11.3.5 锁定或非阻塞锁定用于写入的读写锁 284
11.3.6 初始化或破坏读写锁定属性对象 284
11.3.7 读写锁属性设置 285
11.3.8 读写锁应用实例 286
11.4 线程信号量 289
11.4.1 线程信号量基本原理 289
11.4.2 无名线程信号量管理 291
11.4.3 无名线程信号量应用实例 293
11.4.4 命名线程信号量管理 296
11.5 线程信号 299
11.5.1 线程信号管理 299
11.5.2 示例程序 300
第12章 Linux Socket网络编程 303
12.1 网络通信基础 304
12.1.1 TCP/IP协议簇基础 304
12.1.2 IPV4基础 305
12.1.3 IP数据包头 307
12.1.4 TCP数据包头 309
12.1.5 UDP数据包头 311
12.2 Socket通信基本概念及过程 312
12.2.1 Socket对象实现 312
12.2.2 面向连接的Socket通信实现 314
12.2.3 面向无连接的Sockek通信实现 320
12.3 面向连接的TCP套接字编程实例 322
12.3.1 使用AF_UNIX实现本机数据流通信 322
12.3.2 使用AF_INET实现数据流通信 325
12.4 面向无连接的UDP套接字编程实例 328
12.5 其他Socket API应用编程 331
12.5.1 socketpair实现本地进程间通信 331
12.5.2 获取/设置socket状态 333
12.5.3 获取网络主机条目 334
12.5.4 获取服务条目 338
12.5.5 获取/设置或结束协议条目 339
12.5.6 地址转换管理操作 340
12.5.7 地址操作例行程序 341
附录A GCC参数说明 343
附录B gdb命令手册 367
附录C vim参考手册 383
附录D Emacs编辑器 395
附录E CVS服务器配置 401
1.1 Linux操作系统概述 2
1.1.1 Linux操作系统简介 2
1.1.2 GNU/Linux简介 3
1.1.3 相关术语介绍 3
1.2 Linux开发初步 5
1.2.1 Linux下C程序开发标准 5
1.2.2 库函数和系统调用 7
1.2.3 在线文档介绍 9
1.2.4 获取错误信息 10
1.2.5 Linux应用程序示例 11
1.3 Linux内核及库文件管理 12
1.3.1 Linux内核目录结构 13
1.3.2 使用Linux系统库文件 14
1.3.3 创建静态库和共享库 17
1.4 Linux下编码风格 19
1.4.1 GNU编码规范 19
1.4.2 Linux内核编码规范 20
第2章 Linux下C语言开发工具 23
2.1 Linux开发的基本工具 24
2.1.1 Vim编辑器 24
2.1.2 Emacs编辑器 26
2.1.3 tar打包器 27
2.1.4 Linux编程常用命令及工具 28
2.2 GCC/G++编译器 36
2.2.1 GCC/G++简介 36
2.2.2 Glibc库 43
2.2.3 GCC不同编译选项对程序的影响 45
2.3 make工具及makefile文件 49
2.3.1 make工具简介 49
2.3.2 makefile常用规则 52
2.4 GDB调试工具 54
2.4.1 GDB调试工具简介 54
2.4.2 GDB演示示例 55
2.4.3 GDB调试器常用语法 56
2.5 GCC程序开发过程实例 58
2.6 自动编译调试工具 61
2.6.1 Autoconf/Automake工具组简介 61
第3章 内存管理及相关工具 69
3.1 内存管理基本概念 70
3.1.1 C程序内存分配 70
3.1.2 栈和堆的区别 72
3.1.3 Linux数据类型大小 73
3.1.4 数据存储区域实例 75
3.2 内存管理函数 77
3.2.1 malloc/free函数 77
3.2.2 realloc——更改已经配置的内存空间 80
3.2.3 其他内存管理函数calloc和alloca 82
3.3 常用Linux内存管理及调试工具 82
3.3.1 mcheck函数 83
3.3.2 Valgrind内存检测工具 84
第4章 ANSI C文件管理 89
4.1 文件基本概念及文件指针 90
4.1.1 文件基本概念 90
4.1.2 文件指针 91
4.2 ANSI C标准文件I/O操作 93
4.2.1 缓冲区类型 93
4.2.2 打开关闭文件 96
4.2.3 读写文件流 98
4.2.4 文件流定位 102
4.2.5 格式化输入输出函数 103
第5章 POSIX标准文件I/O管理 107
5.1 Linux系统下文件类型及属性 108
5.1.1 Linux文件模式 108
5.1.2 Linux文件类型 108
5.1.3 文件权限修饰位 111
5.1.4 文件访问权限位 112
5.1.5 文件描述符 113
5.2 POSIX标准下文件I/O管理 114
5.2.1 创建/打开/关闭文件 114
5.2.2 文件控制fcntl 117
5.2.3 lockf文件控制 121
5.2.4 锁定/解锁文件flock 122
5.2.5 读/写文件内容 124
5.2.6 文件定位 127
第6章 Linux文件管理及目录操作 129
6.1 Linux文件系统管理 130
6.1.1 Linux下VFS虚拟文件系统 130
6.1.2 ext2文件系统结构 131
6.1.3 超级块结构 131
6.1.4 dentry结构 132
6.1.5 Inode块 133
6.1.6 数据块及文件 135
6.2 Linux文件及目录管理操作 136
6.2.1 读取文件属性 136
6.2.2 修改文件权限操作 138
6.2.3 修改掩码umask 140
6.2.4 修改文件的拥有者及组 141
6.2.5 添加删除目录 142
6.2.6 连接文件管理 142
6.2.7 当前目录操作 143
第7章 Linux进程管理与程序开发 147
7.1 进程环境及进程属性 148
7.1.1 程序及进程环境 148
7.1.2 进程的基本属性 149
7.2 Linux进程控制 153
7.2.1 创建进程 153
7.2.2 运行新进程 158
7.2.3 等待进程结束 160
7.2.4 退出进程 166
7.2.5 修改进程用户相关信息 168
7.2.6 复制进程 172
7.3 Linux进程调度 173
7.3.1 进程状态 173
7.3.2 Linux常用调度算法 174
7.3.3 调度管理函数 176
第8章 进程间通信——管道和信号 183
8.1 进程通信——无名管道 184
8.1.1 无名管道概念 184
8.1.2 无名管道管理及应用 184
8.2 进程通信——有名管道FIFO 190
8.2.1 有名管道概念 190
8.2.2 有名管道管理及应用 191
8.3 信号中断处理 194
8.3.1 信号的基本概念 194
8.3.2 信号基本操作及应用 197
第9章 System V进程间通信 209
9.1 System VIPC基础 210
9.1.1 key值和ID值 210
9.1.2 拥有者及权限 211
9.2 消息队列 212
9.2.1 消息队列IPC原理 212
9.2.2 Linux消息队列管理 214
9.2.3 消息队列应用实例 217
9.3 信号量通信机制 220
9.3.1 信号量IPC原理 220
9.3.2 Linux信号量管理操作 221
9.3.3 信号量应用实例 226
9.4 共享内存 229
9.4.1 共享内存IPC原理 229
9.4.2 Linux共享内存管理 231
9.4.3 共享内存处理应用示例 233
9.4.4 共享内存处理应用示例 235
第10章 Linux多线程编程 239
10.1 Linux线程概述 240
10.1.1 线程基本概念 240
10.1.2 线程基本应用概述 240
10.1.3 进程/线程应用对比 243
10.2 Linux线程基本操作 244
10.2.1 创建线程 244
10.2.2 退出线程 245
10.2.3 等待线程 245
10.2.4 取消线程 246
10.2.5 线程基本操作应用实例 247
10.3 线程属性控制 249
10.3.1 初始化线程属性对象 250
10.3.2 获取/设置线程属性 251
10.3.3 线程属性控制实例 255
10.4 线程调度 257
10.4.1 调度策略基本概念 257
10.4.2 调度策略管理 258
10.4.3 线程调度策略示例程序 259
第11章 线程间通信机制 263
11.1 互斥锁通信机制 264
11.1.1 互斥锁基本原理 264
11.1.2 初始化或损坏互斥锁 265
11.1.3 锁定/非阻塞锁定一个互斥锁 266
11.1.4 解锁互斥锁 267
11.1.5 初始化或破坏互斥锁属性对象 267
11.1.6 互斥锁使用范围 268
11.1.7 互斥锁kind属性设置 269
11.1.8 互斥锁应用实例 269
11.2 条件变量通信机制 271
11.2.1 条件变量基本原理 271
11.2.2 初始化或损坏条件变量 273
11.2.3 取消阻塞一个或所有等待条件变量的线程 274
11.2.4 等待或定时等待条件变量 274
11.2.5 初始化或破坏条件变量属性对象 276
11.2.6 读取/设置条件变量争用范围 277
11.2.7 条件变量应用实例 277
11.3 读写锁通信机制 281
11.3.1 读写锁基本原理 281
11.3.2 初始化或损坏读写锁 282
11.3.3 解除读写锁定 283
11.3.4 锁定或非阻塞锁定用于读取的读写锁 283
11.3.5 锁定或非阻塞锁定用于写入的读写锁 284
11.3.6 初始化或破坏读写锁定属性对象 284
11.3.7 读写锁属性设置 285
11.3.8 读写锁应用实例 286
11.4 线程信号量 289
11.4.1 线程信号量基本原理 289
11.4.2 无名线程信号量管理 291
11.4.3 无名线程信号量应用实例 293
11.4.4 命名线程信号量管理 296
11.5 线程信号 299
11.5.1 线程信号管理 299
11.5.2 示例程序 300
第12章 Linux Socket网络编程 303
12.1 网络通信基础 304
12.1.1 TCP/IP协议簇基础 304
12.1.2 IPV4基础 305
12.1.3 IP数据包头 307
12.1.4 TCP数据包头 309
12.1.5 UDP数据包头 311
12.2 Socket通信基本概念及过程 312
12.2.1 Socket对象实现 312
12.2.2 面向连接的Socket通信实现 314
12.2.3 面向无连接的Sockek通信实现 320
12.3 面向连接的TCP套接字编程实例 322
12.3.1 使用AF_UNIX实现本机数据流通信 322
12.3.2 使用AF_INET实现数据流通信 325
12.4 面向无连接的UDP套接字编程实例 328
12.5 其他Socket API应用编程 331
12.5.1 socketpair实现本地进程间通信 331
12.5.2 获取/设置socket状态 333
12.5.3 获取网络主机条目 334
12.5.4 获取服务条目 338
12.5.5 获取/设置或结束协议条目 339
12.5.6 地址转换管理操作 340
12.5.7 地址操作例行程序 341
附录A GCC参数说明 343
附录B gdb命令手册 367
附录C vim参考手册 383
附录D Emacs编辑器 395
附录E CVS服务器配置 401
猜您喜欢