《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
应用程序开发基础主题,包括库(动态的和静态的)、文件处理、管道、套接字和编程基础等
GNU/Linux过程模型(包括线程)和POSIXIPC机制(如消息队列、旗语和共享内存)
shell和脚本编程基础,从常用的GNU/Linux命令到Bash、Ruby和Python
sed和AWK文本处理,flex和bison解析器
调试和代码硬化技术,包括软件测试工具、覆盖测试和GCov和GPro概要和内存调试工具等
《GNU/LINUX环境编程(第2版)》针对Linux程序员,《GNU/LINUX环境编程(第2版)》详细介绍如何开发高性能、高安全性的应用程序。经过全面修订的第2版涵括所有必要的工具和编程技术,提供丰富示例来说明GNU/Linux APl的用法。全书共5部分34章,主题涉及GNU工具,应用程序开发,shell与脚本编程,调试和提高安全性,虚拟化技术。凡此种种,吸引着近万名程序员选择《GNU/LINUX环境编程(第2版)》宋学习GNU/Linux编程技术。
《GNU/LINUX环境编程(第2版)》浅显易懂,从全局介绍Linux编程基础,重点强调Linux编程利器的使用,对Linux程序员具有重要的参考和指导作用。
目录
第Ⅰ部分 导论
第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
ChristianSirianomadeheadlinesastheyoungestdesignertowinBravoshighlyratedrealitys...
《计算机主板维修不是事儿(第2版)》内容简介:本书是计算机主板芯片级维修的技术指导参考书,从电路基础、电路工作原理到维修思路
动画艺术辞典 内容简介 动画是一种高浓缩的介质,把许许多多有趣的、美好的、实在的或是虚幻的事物包含在了一个紧凑的时间和空间里。可以说目前没有任何一种视觉艺术能够...
《现代示波器高级应用》内容简介:本书深入剖析了现代示波器的架构,并通过近百个经典案例及精美插图,展示了现代示波器在实战中的
◆全球工业设计教父,世界顶级创意咨询公司青蛙公司创始人哈特穆特·艾斯林格,首次揭秘设计战略如何塑造商业的未来,如何将创新
《影像杂谈》内容简介:作者影像评论十二篇首次结集,并配以作者的手机快照。《影像杂谈》以画家之眼,谈论时间对于摄影的参与,记
Excel函数与图表应用技巧500例-(附赠多媒体光盘一张) 本书特色 《Excel函数与图表应用技巧500例(附光盘实用技巧快学速查手册)》由梁为民主编,本书...
《Python自然语言处理(影印版)》提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译
《搜索引擎:原理技术与系统》系统地介绍了互联网搜索引擎的工作原理、实现技术及其系统构建方案。《搜索引擎:原理技术与系统》分
《七周七并发模型》内容简介:《七周七并发模型》介绍了七种并发模型,行文通俗易懂,有数量充足且设计精良的样例来帮助读者理解。
《Flash网站建设技术精粹》并不是一本大而全的图书,而是以Flash网站技术要点为主、注重实用性的一本图书。《Flash网站建设技术精
C游戏编程从入门到精通-(第2版)(配1张光盘) 目录 第1章文本格式游戏1.1文本模式游戏制作1.1.1文本窗口函数1.1.2INT10中断功能1.2猜数字游...
五笔字根查记手册 内容简介 许多人觉得五笔字型难学难记,难就难在五笔字型的编码与拆分。初学五笔字型的人都有这样的感觉,碰到一个汉字,往往**个字根能够准确地拆分...
TheVisualMiscellaneumisaunique,groundbreakinglookatthemoderninformationage,helpi...
电脑维修与技巧888问 内容简介 电脑已经成为人们生活中不可缺少的一部分。虽然大家都在使用电脑,但不是每个人都能够使用得得心应手,当电脑出故障时,许多人就束手无...
《亿级流量网站架构核心技术》一书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为
推荐系统技术.评估及高效算法 本书特色 本书主要介绍了国际市场营销环境、国际市场营销战略和国际市场营销策略。本书在第2版的基础上进行更新,具有如下特点:一是采取...
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。全书共
《出众的设计师:全栈设计师高效成长法则》内容简介:我们处在一个快速发展的时代,各行各业都被不断突破并重组,很多岗位被重新定
[FROMwww.amazon.com]:TheLittleProverintroducesinductiveproofsasawaytodeterminefa...