《实战Linux编程精髓》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(以)Arnold Robbins著;杨明军,曹亚菲,夏毅译
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2005
  • ISBN:7508330072
  • 页数:506 页
图书介绍:编写应用软件,特别是那些比较重要的软件,毫无疑问要涉及到系统调用。在UNIX/Linux环境下编程更是如此。要想编写优秀的软件,就必须熟悉这些系统调用的方方面面。通过阅读这本书,你能够快速地掌握这些重要技术,以构建严谨的Linux软件。

第1部分 文件与用户 1

第1章 引言 3

1.1 Linux/Unix文件模型 3

1.2 Linux/Unix进程模型 7

1.3 标准C与原始C 9

1.4 为什么GNU程序更好? 10

1.5 回顾可移植性 13

1.6 推荐读物 14

练习 15

1.7 小结 15

第2章 参数、选项和环境 17

2.1 选项和参数约定 17

2.2 基本的命名行处理技术 20

2.3 选项解析:getopt()和getopt_long()函数 21

2.4 环境 29

2.5 小结 36

练习 37

3.1 Linux/Unix地址空间 39

第3章 用户级内存管理 39

3.2 内存分配 42

3.3 小结 60

练习 60

第4章 文件和文件I/O 63

4.1 介绍Linux/Unix I/O模型 63

4.2 介绍基本的程序结构 64

4.3 确定出了什么问题 65

4.4 输入与输出 70

4.5 随机访问:在文件内部移动读写位置 78

4.6 创建文件 81

4.7 强迫数据存到磁盘上 86

4.8 设置文件长度 87

4.9 小结 88

练习 88

第5章 目录和文件元数据 91

5.1 仔细思考目录的内容 91

5.2 创建和删除目录 100

5.3 读取目录 102

5.4 获取文件相关信息 107

5.5 修改所有权、权限和修改时间 119

5.6 小结 125

练习 125

第6章 通用库接口——第一部分 127

6.1 时间和日期 127

6.2 排序和搜索函数 138

6.3 用户名和组名 150

6.4 终端:isatty() 154

6.6 小结 155

6.5 推荐读物 155

练习 156

第7章 综合应用:Is 159

7.1 V7 ls命令选项 159

7.2 V7 Is命令的源代码 160

7.3 小结 173

练习 173

第8章 文件系统和目录遍历 175

8.1 安装和卸载文件系统 175

8.2 用于文件系统管理的文件 182

8.3 获得每个文件系统的信息 187

8.4 在文件层次结构中移动 197

8.5 在文件树中移动:GNU du 206

8.6 改变根目录:chroot() 212

8.7 小结 213

练习 214

第2部分 进程、IPC和国际化 215

9.1 进程创建和管理 217

第9章 进程管理和管道 217

9.2 进程组 237

9.3 基本的进程间通信:管道和FIFO 239

9.4 文件描述符管理 243

9.5 例子:gawk中的双向管道 255

9.6 推荐读物 258

9.7 小结 259

练习 260

第10章 信号 263

10.1 引言 263

10.3 标准C信号:signal()和raise()函数 264

10.2 信号处理 264

10.4 运转中的信号处理器 268

10.5 System V版本3的信号API:sigset()等函数 277

10.6 POSIX信号 278

10.7 进程间通信信号 287

10.8 一些重要的专用信号 290

10.9 横跨fork()和exec()函数的信号 303

10.10 小结 303

练习 305

第11章 权限、用户ID号及组ID号 307

11.1 权限检查 307

11.2 获取用户ID和组ID 310

11.3 核准作为真实用户:access()函数 312

11.4 核准作为有效用户:euidaccess()函数(GLIBC) 313

11.5 设置目录的额外权限标志位 314

11.6 设置真实ID和有效ID 316

11.7 处理三种ID:getresuid()和setresuid()(Linux) 320

11.8 穿越安全雷区:setuid root 321

11.10 小结 322

11.9 推荐读物 322

练习 323

第12章 通用库接口——第二部分 325

12.1 断言语句:assert()宏 325

12.2 底层内存操作:memXXX()函数 328

12.3 临时文件 332

12.4 自杀:abort()函数 339

12.5 非局部转移 339

12.6 伪随机数 346

12.7 元字符扩展 351

12.8 正则表达式 360

12.9 推荐读物 366

12.10 小结 367

练习 368

第13章 国际化和本地化 371

13.1 引言 371

13.2 区域设置和C语言库 372

13.3 程序消息的动态翻译 387

13.4 请把它拼写出来,好吗? 399

13.6 小结 401

13.5 推荐读物 401

练习 402

第14章 扩展接口 403

14.1 分配对齐的内存:posix_memalign()和memalign()函数 403

14.2 文件锁定 404

14.3 更精确的时间 413

14.4 使用二叉树进行高级搜索 419

14.5 小结 428

练习 428

第3部分 调试和最终的项目 431

第15章 调试 433

15.1 首要问题 434

15.2 为调试而编译 434

15.3 GDB基础 434

15.4 为调试而编程 440

15.5 调试工具 462

15.6 软件测试 482

15.7 调试规则 483

15.9 小结 485

15.8 推荐读物 485

练习 486

第16章 综合前面所有主题的工程 489

16.1 工程描述 489

16.2 推荐读物 491

第4部分 附录 493

附录A 十年学会编程 495

为何人人都这么着急? 495

十年学会编程 496

参考文献 497

答案 498

脚注 498

附录B Caldera原始UNIX许可证 499

附录C GNU通用公共许可证 501

序言 501

复制、发布和修改的条款和条件 502

没有担保 504

条款和条件的结束 504

如何将这些条款运用于你的新程序 504

应用示例 505