![]() 作者:琼斯 出版社: 清华大学出版社 原作名: GNU/Linux Application Programming 译者:张元章 出版年: 2010-3 页数: 530 定价: 69.00元 装帧: 平装 ISBN: 9787302220657 内容简介 · · · · · ·《GNU/LINUX环境编程(第2版)》详细介绍如何开发可以运行于GNU/Linux操作系统的应用程序,经过全面修订的第2版涵括所有必要的工具和编程技术,提供丰富的例子来说明GNU/Linux API的使用。GNU/Linux也称Linux,被誉为操作系统中的“瑞士军刀”。从iPod之类的小型设备到IBM的Blue Gene之类的超级计算机,都可以看到它的“芳踪”。GNU/LinuX可以运行于大众化体系结构之上,从老式的x86处理器到最新的Play Station 3游戏机采用的cell处理器,不一而举。 GNU/Linux架构与虚拟化技术 GNU工具,如GCC,make、automake/autoconf,源代码控制系统,GNU Debugger和Gnuplot 应用程序开发基础主题,包括库(动态的和静态的)、文件处理、管道、套接字和编程基础等 G... 作者简介 · · · · · ·M.Tim Jones是一名嵌入式软件架构师,也是多部畅销书的作者,代表作有AI Application Programming,BSD Sockets Proqramming from a Multilanguage Perspective,Artificial Intelligence:A Systems Approach,还发表过大量技术文章。他的工程背景很丰富,曾经为太空船开发过内核,也开发过嵌入式系统架构和联网协议。Tim目前在科罗拉多 Longmont的Emulex公司担任顾问工程师。 目录 · · · · · ·目录第Ⅰ部分 导论 第1章 GNU/Linux的历史 3 概述 3 Unix操作系统的历史 3 AT&T UNIX 4 · · · · · ·() 目录 第Ⅰ部分 导论 第1章 GNU/Linux的历史 3 概述 3 Unix操作系统的历史 3 AT&T UNIX 4 BSD 4 GNU/LINUX的历史 4 GNU和自由软件基金会 5 Linux内核 5 合作 6 Linux的发行 7 小结 7 参考文献 7 第2章 GNU/Linux系统架构 9 概述 9 系统架构概要 9 Linux内核的架构 10 GNU系统库(glibc) 11 系统调用接口 11 内核组件 12 硬件 15 小结 16 资源 16 第3章 自由软件开发 17 概述 17 开放源码与自由软件 17 自由软件项目剖析 18 开源证书 18 GPL 19 Qt公共许可证 19 BSD许可证 20 证书小结 20 开源开发的问题 20 可用性/可靠性斜线上升 20 文档问题 21 自我 21 狂热 21 小结 22 参考文献 22 资源 22 第4章 Linux虚拟化与仿真 23 概述 23 什么是虚拟化? 23 虚拟化简史 24 虚拟化的意义 26 虚拟化的分类 27 完全虚拟化 27 准虚拟化 27 模拟 28 操作系统的虚拟化 29 硬件辅助虚拟化 30 开源虚拟化解决方案 31 QEMU 31 KVM 34 小结 35 第Ⅱ部分 GNU工具 第5章 GNU编译工具链 39 概述 39 编译简介 40 GCC的格式(编译,汇编和链接) 41 有用的选项 41 编译警告 42 GCC优化器 44 -O0优化 45 -O1优化(-O) 45 -O2优化 45 -Os优化 46 -O3优化 46 架构相关的优化 47 调试选项 48 其他工具 48 小结 49 第6章 应用GNU make构建软件 50 概述 50 示例项目 50 手工编译 51 buildit脚本 51 简单的Makefile文件 52 Makefile变量 54 模式匹配规则 57 自动依赖跟踪 58 小结 60 第7章 库的构建与使用 61 概述 61 什么是库? 61 生成静态库 62 共享库的生成 68 动态加载库 69 工具 73 file工具 73 size命令 73 nm命令 73 objdump工具 74 ranlib工具 76 小结 76 动态库API 76 第8章 用automake/autoconf打包 77 概述 77 一个简单的项目 78 Makefile解决方案 78 自动工具的简单运用 79 automake工具 81 autoconf工具 82 configure脚本 83 生成的Makefile文件 84 小结 85 第9章 GNU/Linux的源码控制 86 概述 86 源码控制的定义 86 源码控制范例 87 存储库的架构 87 修订模型 88 有用的源码控制工具 89 CVS 89 SVN 94 Git源码控制系统 99 小结 104 参考文献 105 资源 105 第10章 应用Gnuplot进行 ?数据可视化 106 概述 106 Gnuplot 106 安装Gnuplot 107 用户界面 107 简单绘图 108 绘制文件中的数据 110 3D的函数绘制 111 3D等值线绘图 114 隐线消除 114 将图保存为文件 115 多图模式 116 使用Gnuplot的工具 117 小结 117 资源 118 第Ⅲ部分 应用程序开发主题 第11章 GNU/Linux的文件操作 123 概述 123 GNU/Linux的文件操作 123 探究文件操作API 124 创建一个文件句柄 124 打开文件 124 数据的读写 126 二进制数据的读写 133 基础API 138 小结 140 文件操作API 141 第12章 管道编程 142 概述 142 管道模型 142 管道和命名管道 143 旋风式简介 143 详细介绍 145 pipe函数 145 函数dup和dup2 147 函数mkfifo 149 系统命令 150 mkfifo命令 150 小结 151 管道编程API 151 第13章 套接字编程简介 152 概述 152 网络的分层模型 152 套接字编程的范式 153 主机 154 协议 154 端口 154 地址 154 套接字 155 客户端/服务器模式 155 应用程序示例 156 日期查询服务器 157 日期查询客户端 160 套接字API小结 161 创建和清除套接字 161 套接字地址 162 套接字的原语 163 其他“杂项”函数 168 其他传输协议 169 SCTP的特点 169 SCTP的特点其他 171 多语言视角 171 小结 173 套接字编程API 173 参考文献 174 资源 174 第14章 GNU/Linux进程模型 175 概述 175 GNU/Linux进程 175 旋风式简介 176 用fork创建一个子进程 177 与创建者进程同步 179 捕获信号 180 发出信号 181 传统的进程API 184 fork函数 185 wait函数 186 waitpid函数 187 signal函数 188 pause函数 192 kill函数 192 raise函数 193 exec 变体 194 alarm函数 197 exit函数 198 POSIX信号 199 系统命令 202 ps命令 202 top命令 203 kill命令 203 小结 204 proc文件系统 204 资源 206 API小结 206 第15章 POSIX线程(P线程)编程 207 概述 207 什么是线程 208 线程函数基础 209 P线程API 209 线程基础 210 线程管理 211 线程的同步 212 线程互斥 214 线程条件变量 218 构建使用线程的应用程序 224 小结 225 参考资料 225 API小结 225 第16章 消息队列IPC 227 概述 227 消息队列简介 227 创建消息队列 228 配置一个消息队列 229 向一个消息队列中写入消息 230 从消息队列中读取消息 231 移除消息队列 232 消息队列API 233 msgget函数 233 msgctl函数 236 msgsnd函数 240 msgrcv函数 241 用户工具 243 小结 245 消息队列API函数 245 第17章 旗语同步 246 概述 246 旗语理论 246 旗语的类型 247 GNU/Linux旗语快速简介 248 创建旗语 249 获取和释放旗语 250 配置旗语 253 移除旗语 254 旗语API 255 semget函数 256 semctl函数 258 semop函数 264 用户工具 266 小结 268 旗语API 268 第18章 共享内存编程 269 概述 269 快速了解共享内存 270 创建共享内存区段 270 取得共享内存区段的信息 271 共享内存区段的挂接和脱离 272 使用共享内存区段 273 移除共享内存区段 275 共享内存API 276 shmget函数 276 shmctl函数 279 shmat函数 283 shmdt函数 284 使用共享内存区段 285 用户工具 289 小结 290 参考文献 290 共享内存API 291 第19章 高级文件操作 292 概述 292 测试文件类型 292 其他stat信息 294 确定当前工作目录 295 列举目录 296 使用inotify进行文件事件通知 299 通知过程 299 从文件系统中移除文件 304 传输数据 305 小结 305 高级文件操作API 305 第20章 其他应用程序开发主题 308 概述 308 使用getopt和getopt_long解析 命令行选项 308 时间API 313 用sysinfo收集系统信息 315 使用mmap进行内存映射 317 锁定和解锁内存 320 Linux错误报告 322 小结 324 API小结 324 第Ⅳ部分 GNU/Linux的shell与脚本 第21章 GNU/Linux标准命令 331 概述 331 重定向 331 标准输入/输出/错误 332 环境变量 333 脚本调用 334 GNU/Linux基本命令 335 小结 344 第22章 Bourne-Again shell(Bash) 345 概述 345 预备知识 345 示例脚本 346 bash脚本 347 变量 347 条件结构 351 条件 351 case结构 355 循环结构 356 while循环 356 for循环 358 输入与输出 359 函数 361 示例脚本 362 简单的目录档案管理脚本 363 查找今天更新/创建的文件的 脚本程序 364 其他脚本语言 366 小结 366 资源 367 第23章 使用sed进行编辑 368 概述 368 剖析一个简单的脚本 369 sed空间(缓冲器) 370 典型的sed命令行选项 370 正则表达式 371 操作范围 372 基本的sed指令 372 替换(s) 372 删除(d) 373 打印(p) 373 行的添加(a)、插入(i)以及改变(c) 373 退出(q) 374 转换(y) 374 行数(=) 375 保持样式空间(h) 375 小结 375 一些有用的sed单行程序 376 资源 376 第24章 使用awk进行文本处理 377 概述 377 awk简史 377 awk结构 377 命令行awk 378 脚本awk 381 其他awk样式 385 小结 385 有用的awk单行程序 386 第25章 使用flex和bison 生成解析器 387 概述 387 词法分析和语法处理 387 词法分析器和解析器的通信 389 flex工具 390 bison工具 393 一个简单的语法 393 在bison中编写语法 394 连接语法解析器和词法分析器 396 构建一个简单的配置解析器 398 配置文件词法分析器 399 全局图像 403 小结 405 第26章 Ruby脚本编程 406 概述 406 Ruby简介 406 为什么使用Ruby 407 和其他语言的比较 407 Ruby快速示例 408 语言元素 410 类型和变量 410 控制 411 重复 412 Ruby中的字符串操作 413 关联数组 414 类与方法 415 高级功能 418 动态代码 418 异常处理 419 自省 421 其他功能 422 Ruby作为嵌入式语言 422 小结 422 资源 422 第27章 Python脚本编程 423 概述 423 Python简介 423 为什么使用Python 424 与其他语言的比较 424 Python快速示例 425 语言元素 428 类型和变量 428 控制 430 循环 430 Python中的字符串操作 432 关联数组 433 类与方法 434 高级功能 436 动态代码 437 函数式编程 437 异常处理 438 小结 440 资源 440 第28章 GNU/Linux管理基础 441 概述 441 Linux文件系统浏览 441 套件管理 442 Tar球发布 442 高级套件工具 445 内核更新 448 获得最新版的内核 448 配置内核 449 构建内核 450 安装内核 450 配置启动引导程序(Bootloader) 451 小结 451 第Ⅴ部分 调试与测试 第29章 软件单元测试框架 455 概述 455 单元测试 455 单元测试框架 457 打造自己的框架 457 C单元测试系统 462 嵌入单元测试 466 expect工具 469 小结 470 资源 471 第30章 用GDB进行调试 472 概述 472 为GDB进行编译 472 使用GDB 473 启动GDB 475 查看代码 475 使用断点 476 逐步运行程序 478 检查数据 479 改变数据 479 检查堆栈 480 停止程序 480 其他GDB调试主题 480 多进程应用程序调试 480 多线程应用程序调试 481 调试已有的进程 482 事后分析调试 483 小结 484 资源 484 第31章 代码硬化 485 概述 485 代码硬化技术 485 返回值 485 细察用户/网络的输入/输出 486 使用安全字符串函数 486 缓冲区溢出 486 在决定点提供逻辑选择 487 自识别结构体 488 报告错误 490 降低复杂度,从而减少潜在的错误 491 自保护的函数 491 最大调试输出 492 内存调试 492 编译器的支持 492 源码检查工具 493 代码跟踪 493 小结 495 资源 495 第32章 用GNU gcov进行覆盖测试 496 概述 496 什么是gcov 496 准备映像 496 使用gcov工具 498 查看分支概率 499 不完全覆盖 501 gcov可用的选项 502 注意事项 503 小结 504 参考文献 504 资源 504 第33章 用GNU gprof进行 性能分析 505 概述 505 什么是性能分析 505 什么是gprof 505 准备映像 506 使用gprof工具 508 gprof可用的选项 510 注意事项 513 小结 513 参考文献 513 第34章 高级调试主题 514 概述 514 内存调试 514 Valgrind工具 514 Electric Fence 517 yamd工具 517 mtrace工具 520 交叉引用工具 521 Cscope工具 521 其他交叉引用工具 522 用ltrace跟踪系统调用 523 动态挂接GDB 525 小结 527 资源 527 附录 缩写与部分缩写词 528 · · · · · · () |
这本书我在大学时看过一遍
喜欢
超级有内容的一本书,看了之后受益匪浅。
论述严谨