[美] 琼斯《GNU/LINUX环境编程》

[美] 琼斯《GNU/LINUX环境编程》

作者:[美] 琼斯

出版社:清华大学出版社

出版年:2010-3

评分:8.3

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

应用程序开发基础主题,包括库(动态的和静态的)、文件处理、管道、套接字和编程基础等

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

相关推荐

微信二维码