《Linux编程宝典》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)John Goerzen著;魏永明等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2000
  • ISBN:7505362100
  • 页数:748 页
图书介绍:

前言 1

第1部分 Shell和基本工具 7

第1章 Linux编程环境简介 9

1.1 Linux编程基本概念 9

1.2 Linux设计 10

1.3 Linux文档 10

1.4 手册页 11

1.5 Info页 12

1.6 Perl文档 14

1.8 Internet资源 15

1.7 程序文档 15

1.9 小结 16

第2章 Shell编程简介 17

2.1 Bash简介 17

2.1.1 创建脚本 18

2.1.2 启动Bash 19

2.1.3 返回值 20

2.1.4 简单命令组合 21

2.1.5 通配符 26

2.1.6 引号和转义 26

2.1.7 注释 29

2.2 重定向和管道 30

2.2.1 输出重定向 31

2.2.2 输入重定向 35

2.2.3 管道 37

2.2.4 命令置换 40

2.3 变量 40

2.3.1 环境变量 42

2.3.2 特殊变量 44

2.4 函数 46

2.5 条件和循环 50

2.5.1 if 50

2.5.2 使用[...]测试 51

2.5.3 case 53

2.5.4 while 55

2.5.5 for 56

2.6 Shell应用 58

2.7 小结 59

第3章 使用正则表达式 61

3.1 正则表达式简介 61

3.1.1 模式 62

3.1.2 正则表达式语法 63

3.1.3 egrep简介 67

3.1.4 sed简介 69

3.1.5 Perl中的正则表达式 70

3.2 理解字符类 73

3.3 使用量词 75

3.4 备选与分组 80

3.5 在Linux下对正则表达式的支持 81

3.5.1 Perl 81

3.5.2 sed和awk 85

3.5.3 C/C++ 85

3.6 小结 86

第4章 Emacs简介 87

4.1 Emacs入门 87

4.1.1 Emacs键盘操作符号 87

4.1.2 浏览 89

4.1.3 搜索 90

4.1.4 Emacs区域 91

4.1.5 缓冲区 91

4.1.6 窗口 91

4.1.7 框架 93

4.1.8 语法和括弧高亮显示 93

4.2 主模式 94

4.2.1 C模式 95

4.2.2 Perl模式 97

4.2.3 其他模式 98

4.3 Emacs是一个IDE 98

4.3.2 调试 99

4.3.1 编译程序 99

4.3.3 使用标记 100

4.3.4 在Emacs中的Sehll 101

4.3.5 Term模式 103

4.3.6 Dired 104

4.3.7 w3 105

4.3.8 Gnus 107

4.3.9 版本控制 107

4.4 获取帮助 108

4.5 小结 109

5.1 基本概念 111

第5章 理解Linux数据文件和脚本 111

5.2 文件系统层次 112

5.2.1 根目录 112

5.2.2 /dev:设备文件 114

5.2.3 /etc:配置和启动文件 115

5.2.4 /usr:标准系统程序 115

5.2.5 /var:变量数据 115

5.3 passwd和shadow文件 116

5.3.1 从Shell中获取账号信息 117

5.3.2 从C中获取账号信息 118

5.3.3 从Perl中获取账号信息 120

5.4 组文件 121

5.5 init文件 122

5.6.1 DNS文件 126

5.6 网络文件 126

5.6.2 安全性文件 127

5.6.3 超级服务器文件 128

5.7 小结 129

第2部分 C环境 131

第6章 使用gcc 133

6.1 使用gcc编译程序 133

6.1.1 警告 134

6.1.2 优化gcc 135

6.1.3 产生调试标记 139

6.2.2 C++编译器:g++ 143

6.2.1 C编译器:gcc 143

6.2 gcc编译流程简介 143

6.2.3 C预处理器:cpp 144

6.2.4 程序员“礼品店” 147

6.3 管理大型项目 148

6.4 使用高级gcc选项 150

6.4.1 指定查找路径 151

6.4.2 连接库 151

6.4.3 使用管道加速编译过程 152

6.4.4 使用gcc的-v选项 152

6.4.5 使用ANSIC 155

6.5 小结 155

7.1 CNU make简介 157

第7章 使用GNU Make管理项目 157

7.1.2 一个简单的Makefile文件 158

7.1.1 Makefile规则 158

7.1.3 更巧妙的Makefile文件 161

7.2 使用智能的Makefile 166

7.2.1 两种变量类型 166

7.2.2 通配符:问题和解决办法 167

7.2.3 依赖性计算 169

7.3 创建其他文件 181

7.4 使用递归make 187

7.5 小结 194

8.1.1 静态分配内存 195

第8章 内存管理 195

8.1 静态与动态内存 195

8.1.2 动态分配内存 197

8.2 安全性和设计着眼点 201

8.3 高级指针 203

8.3.1 解析数据 214

8.3.2 代码分析 223

8.4 发现问题 225

8.5 小结 226

第9章 库和连接 227

9.1 库简介 227

9.2 创建和使用静态库 228

9.3 创建和使用共享库 232

9.4 使用高级共享库特性 234

9.4.1 ldd工具 234

9.4.2 soname 234

9.4.3 共享库装载器 236

9.4.4 使用LD_PRELOAD 236

9.4.5 使用dlopen 239

9.5 小结 239

第10章 使用gdb调试 241

10.1 gdb需求 241

10.2.1 调试指南 242

10.2 调试步骤 242

10.2.2 调试其他进程 249

10.3 显示数据 253

10.3.1 使用print和display命令 253

10.3.2 内存检查 259

10.3.3 使用Printf命令 260

10.3.4 使用set命令 261

10.4 使用断点和观察窗口 261

10.4.1 设置断点 261

10.4.2 设置观察窗口 264

10.5 core dump分析 268

10.6 命令小结 275

10.7 小结 278

第3部分 Linux模型 279

第11章 文件、目录和设备 281

11.1 文件的实质 281

11.1.1 系统调用stat( )和lstat( ) 282

11.1.2 opendir( )、readdir( )及其相关函数 292

11.2 I/O方法 299

11.2.1 基于流的I/O方法 299

11.2.2 系统调用I/O方法 300

11.3 特殊文件 303

11.4 小结 304

12.2 进程基础知识 305

12.1 理解进程模型 305

第12章 Linux系统中的进程 305

12.3 启动和终止进程 307

12.3.1 派生的基本原理 307

12.3.2 执行其他程序 308

12.3.3 等待进程 310

12.3.4 一起使用 318

12.4 使用返回代码 320

12.5 进程的同步措施 323

12.5.1 原子操作和非原子操作 324

12.5.2 死锁 325

12.5.3 竞争条件 325

12.5.4 自旋和忙等待 326

12.6 了解安全性 327

12.6.1 安全性的基本知识 327

12.6.2 安全性秘密 327

12.6.3 setuid和setgid 329

12.6.4 setuid和setgid的负效应 339

12.6.5 保证setuid和seteid的安全 340

12.7 小结 343

第13章 了解信号 345

13.1 信号的使用 345

13.2 信号处理程序 346

13.2.1 基本信号处理程序 346

13.2.2 阻塞信号 351

13.2.3 高级信号处理程序 357

13.3 信号发送 363

13.4 信号和系统调用 372

13.5 信号处理程序带来的危险 373

13.6 小结 373

第14章 Linux的I/O系统简介 375

14.1 程序库和系统调用 375

14.1.1 基于流的I/O方法 376

14.1.1 系统调用I/O方法 379

14.2 错误情况 386

14.2.1 使用封装的函数库 387

14.2.2 在读者自己的程序中使用封装函数库 395

14.3 高级I/O 399

14.3.1 稀疏文件 399

14.3.2 非阻塞I/O方式 401

14.4 内存映射的I/O 402

14.5 函数调用select( )和poll( ) 406

14.5.1 select( )函数 406

14.5.2 poll( )函数 411

14.6 咨询锁定 414

14.7 小结 419

第15章 终端编程 421

15.1 终端属性 422

15.2 伪终端 425

15.3 Ncurses 429

15.4 小结 456

第4部分 与世界交流 457

第16章 共享内存和信号量 459

16.1 使用共享内存 459

16.2 使用信号量同步 460

16.3 利用共享内存通信 470

16.4 小结 487

第17章 使用管道和FIFO 489

17.1 建立管道 490

17.2 实现重定向 499

17.4 使用FIFO 504

17.3 解决通信问题 504

17.5 小结 509

第18章 Internet套接字 511

18.1 TCP/IP简介 511

18.1.1 问题 511

18.1.2 解决方案 512

18.1.3 术语注解 513

18.2 TCP/IP的独特挑战 513

18.3 协议 514

18.4 寻址 515

18.5 客户端连接 516

18.6 服务器端连接 519

18.7 一个网络函数库 529

18.8 小结 542

第19章 高级ICP/IP套接字 543

19.1 服务器设计和多工化 543

19.2 用户数据报协议 552

19.3 小结 552

第5部分 利用Perl协同工作 553

第20章 Perl简介 555

20.1 Perl的设计思想 555

20.1.1 变量 556

20.1.2 数组 557

20.1.3 哈希表 558

20.2 第一步 559

20.3 数据结构 565

20.3.1 引用 565

20.3.2 匿名引用 566

20.3.3 符号引用 567

20.3.4 数组 567

20.3.5 嵌套哈希表 572

20.4 子例程和作用域 577

20.5 流控制 579

20.6 OOP特征 580

20.7 小结 588

21.1 读取数据 589

第21章 利用Perl操作数据 589

21.2 分析和处理数据 591

21.2.1 使用split 593

21.2.2 使用grep 595

21.3 保存数据 596

21.3.1 使用数据库 596

21.3.2 使用Data Dumper 607

21.3.3 Data Dumper选项 611

21.4 输出和特别考虑的问题 612

21.4.1 基本输出 612

21.4.3 open的选项 613

21.4.2 输出到文件或命令 613

21.4.4 传递文件句柄 614

21.4.5 文件句柄的作用域 614

21.5 小结 615

第22章 CGI编程 617

22.1 CGI与Web 617

22.2 编写CGI脚本 618

22.3 处理无连接问题 630

22.4 解决性能问题 632

22.5 小结 632

23.1 数据库简介 633

第23章 利用DBI访问SQL数据库 633

23.2 使用DBI的第一步 634

23.3 使用SQL 638

23.3.1 创建表 638

23.3.2 插入数据 639

23.3.3 读取数据 640

23.3.4 更新表 643

23.3.5 删除信息 644

23.3.6 连接表 645

23.4 在应用程序中使用数据库 648

23.4.1 DBI和命令行 648

23.4.2 DBI和CGI 652

23.5 小结 666

第6部分 使用X的图形界面 667

第24章 利用Perl/TK的GUI 669

24.1 Linux中的CUI编程 669

24.1.1 X Window系统基础 670

24.1.2 位置无关性 670

24.2 客户解剖 670

24.2.1 Xlib 671

24.2.2 构件集 671

24.2.3 层次化窗口 671

24.2.4 配置 671

24.4 使用Perl/TK的第一步 672

24.3 基于事件的编程 672

24.5 对象属性 674

24.6 特殊对象 679

24.6.1 窗框 679

24.6.2 菜单 679

24.6.3 文本和画布 684

24.7 几何管理器 686

24.8 特别考虑的问题 691

24.9 SpecTcl/SpecPerl 691

24.10 小结 694

第25章 利用GNOME建立GUI 695

25.1 使用GNOME组件 695

25.2 第一步 696

25.3 绘制窗口 699

25.4 其他GNOME注解 703

25.5 小结 704

第7部分 将一切组织起来 705

第26章 利用CVS管理归档和协作 707

26.1 CVS简介 707

26.2 建立仓库 708

26.3 CVS的日常使用 709

26.4 使用标记和分支 713

26.4.1 标记 714

26.4.2 分支 715

26.5.2 生成ssh键 717

26.5 访问网络 717

26.5.1 设置服务器 717

26.5.3 境变量 718

26.6 技巧和诀窍 719

26.6.1 关键词 719

26.6.2 二进制文件 720

26.6.3 使用子目录 721

26.6.4 CVSROOT文件 721

26.7 小结 722

第27章 理解安全性和代码 723

27.1 好代码的重要性 723

27.2.2 访问控制 724

27.2 Linux安全性概览 724

27.2.1 验证 724

27.3 安全性的指导方针 726

27.3.1 安全性原则 726

27.3.2 常见问题 728

27.3.3 编写安全代码 729

27.4 小结 732

第28章 优化性能 733

28.1 更快代码的原则 733

28.1.1 三种度量 733

28.1.2 循环 733

28.1.5 重新编写时间关键代码块 736

28.1.6 增加块大小 736

28.1.3 帮助优化器 736

28.1.4 避免浮点数 736

28.2 高价操作和廉价操作 737

28.2.1 系统调用 737

28.2.2 fork 737

28.2.3 exec 737

28.2.4 system 737

28.3 编译器优化 738

28.4 使用gprof 738

28.5 小结 748