Linux程序设计PDF电子书下载
- 电子书积分:21 积分如何计算积分?
- 作 者:(英)Neil Matthew,(英)Richard Stones著;杨晓云等译
- 出 版 社:北京:机械工业出版社
- 出版年份:2002
- ISBN:7111093224
- 页数:782 页
序言 1
前言 1
第1章 入门知识 1
1.1 什么是UNIX操作系统 1
1.2 什么是Linux操作系统 1
1.3 发行版本 2
1.4 GNU项目和自由软件基金会 2
1.5 为Linux系统设计程序 3
1.6 UNIX程序 4
1.7 获得帮助 6
1.8 程序开发系统的预备知识 8
1.8.1 程序 8
1.8.2 头文件 8
1.8.3 库文件 9
1.8.4 静态库 10
1.8.5 共享库 12
1.9 UNIX系统中程序设计的特点和原则 13
1.9.1 简单性 13
1.9.2 重点性 13
1.9.3 可反复使用的程序组件 13
1.9.4 过滤器 14
1.9.5 开放的文件格式 14
1.9.6 灵活适应性 14
1.10 本章总结 14
第2章 shell程序设计 15
2.1 什么是shell 16
2.2 管道和重定向 17
2.2.1 对输出数据进行重定向 17
2.2.2 对输入数据进行重定向 18
2.2.3 管道 19
2.3 可以被视为程序设计语言的shell 19
2.3.1 交互式程序 19
2.3.2 编写脚本程序 20
2.3.3 把脚本设置为可执行程序 21
2.4 shell程序设计的语法 23
2.4.1 变量 23
2.4.2 条件测试 26
2.4.3 控制结构 29
2.4.4 函数 39
2.4.5 命令 42
2.4.6 命令的执行 52
2.4.7 即时文档 55
2.4.8 调试脚本程序 57
2.5 shell程序设计示例 58
2.5.1 工作需求 58
2.5.2 设计 58
2.6 本章总结 66
3.1 UNIX的文件结构 67
第3章 如何使用和处理文件 67
3.1.1 目录结构 68
3.1.2 文件和设备 68
3.2 系统调用和设备驱动程序 70
3.3 库函数 70
3.4 文件的底层访问 71
3.4.1 write系统调用 72
3.4.2 read系统调用 72
3.4.3 open系统调用 73
3.4.4 访问权限的初始化值 74
3.4.5 umask变量 75
3.4.6 close系统调用 76
3.4.7 ioctl系统调用 76
3.4.8 其他与文件管理有关的系统调用 78
3.5 标准I/O库 80
3.5.1 fopen函数 81
3.5.4 fclose函数 82
3.5.3 fwrite函数 82
3.5.2 fread函数 82
3.5.5 fflush函数 83
3.5.6 fseek函数 83
3.5.7 fgetc、getc、getchar函数 83
3.5.8 fputc、putc、putchat函数 83
3.5.9 fgets、gets函数 84
3.5.10 格式化输入和输出 84
3.5.11 对数据流进行处理的其他函数 88
3.5.12 文件流错误处理 89
3.5.13 文件流和文件描述符的关系 90
3.6 文件和子目录的维护 90
3.6.1 chmod系统调用 90
3.6.2 chown系统调用 90
3.6.3 unlink、link、symlink系统调用 91
3.6.4 mkdir和rmdir系统调用 91
3.7 扫描子目录 92
3.6.5 chdir系统调用和getcwd函数 92
3.7.1 opendir函数 93
3.7.2 readdir函数 93
3.7.3 telldir函数 93
3.7.4 seekdir函数 93
3.7.5 closedir函数 94
3.8 错误处理 96
3.9 高级论题 97
3.9.1 fcntl系统调用 97
3.9.2 mmap函数 98
3.10 本章总结 100
第4章 UNIX环境 101
4.1 程序参数 101
4.2 环境变量 105
4.2.1 环境变量的用途 107
4.2.2 environ变量 107
4.3 时间与日期 108
4.4 临时文件 114
4.5 用户的个人资料 116
4.6 主机资料 119
4.7 日志记录功能 121
4.8 资源和限制 124
4.9 本章总结 129
第5章 终端 130
5.1 对终端进行读写 130
5.1.1 对重定向输出进行处理 133
5.1.2 与终端进行“对话” 134
5.2 终端驱动程序和通用终端接口 136
5.2.1 概述 136
5.2.2 硬件模型 137
5.3 termios结构 138
5.3.1 输入模式 139
5.3.3 控制模式 140
5.3.2 输出模式 140
5.3.4 本地模式 141
5.3.5 特殊的控制字符 141
5.3.6 终端的速度 144
5.3.7 其他功能函数 145
5.4 终端的输出 148
5.4.1 终端的类型 148
5.4.2 确定终端类型的方法 149
5.4.3 terminfo的使用方法 151
5.5 检测键盘输入 155
5.6 本章总结 158
第6章 curses函数库 159
6.1 使用curses函数库进行编译 159
6.2 基本概念 160
6.3 操作的初始化和结束 163
6.4 向屏幕输出数据 163
6.6 清除屏幕 164
6.5 从屏幕读取输入数据 164
6.7 移动光标 165
6.8 字符的属性 165
6.9 键盘 167
6.9.1 键盘的工作模式 167
6.9.2 键盘输入 168
6.10 窗口 169
6.10.1 WINDOW结构 170
6.10.2 通用化函数 170
6.10.3 移动和刷新窗口 171
6.10.4 优化窗口的刷新操作 174
6.11 子窗口 175
6.12 键盘上的数字小键盘 177
6.13 彩色显示功能 178
6.14 逻辑屏幕和显示平面 181
6.15 CD唱盘管理软件 182
6.16 本章总结 194
第7章 数据管理 196
7.1 内存管理 196
7.1.1 简单的内存分配机制 196
7.1.2 分配大量的内存 197
7.1.3 内存的滥用 200
7.1.4 空指针 201
7.1.5 内存的释放 202
7.1.6 其他内存分配函数 203
7.2 文件封锁 204
7.2.1 创建锁文件 204
7.2.2 文件中的封锁区 207
7.2.3 封锁状态下的读写操作 209
7.2.4 文件封锁的竞争现象 214
7.2.5 其他封锁命令 217
7.2.6 死锁现象 217
7.3.1 dbm数据库 218
7.3 数据库 218
7.3.2 dbm例程 219
7.3.3 dbm数据库的访问函数 220
7.3.4 其他dbm函数 224
7.4 CD唱盘管理软件 225
7.5 本章总结 241
第8章 开发工具 242
8.1 多个源文件带来的问题 242
8.2 make命令和制作文件 243
8.2.1 制作文件的语法 243
8.2.2 make命令的选项和参数 243
8.2.3 制作文件中的注释 246
8.2.4 制作文件中的宏 246
8.2.5 多个制作目标 248
8.2.6 内建规则 250
8.2.7 后缀规则 251
8.2.8 用make命令管理函数库 252
8.2.9 高级论题:制作文件和下级子目录 254
8.2.10 GNU的make和gcc命令 255
8.3 源代码控制系统 256
8.3.1 RCS系统 256
8.3.2 SCCS系统 261
8.3.3 CVS系统 262
8.4 编写使用手册 266
8.5.1 patch程序 269
8.5 软件的发行传播 269
8.5.2 软件发行方面的其他工具 271
8.6 本章总结 273
第9章 调试与纠错 274
9.1 错误的分类 274
9.1.1 功能定义错误 274
9.1.2 设计规划错误 274
9.1.3 代码编写错误 274
9.2.1 一个有漏洞的程序 275
9.2 常用调试技巧 275
9.2.2 代码审查 277
9.2.3 取样法 278
9.2.4 程序的受控执行 280
9.3 用gab进行调试纠错 281
9.3.1 启动gdb 281
9.3.2 运行一个程序 282
9.3.3 堆栈跟踪 282
9.3.4 对变量进行检查 283
9.3.5 列出程序清单 284
9.3.6 设置断点 284
9.3.7 用调试器打补丁 287
9.3.8 深入学习gdb 288
9.4 其他调试工具 288
9.4.1 lint:清理程序中的“垃圾” 289
9.4.2 函数调用工具 290
9.4.3 执行记录 291
9.5 假设验证 292
9.6 内存调试 294
9.6.1 ElectricFence 294
9.6.2 Checker 295
9.7 资源 297
9.8 本章总结 297
第10章 进程与信号 298
10.1 什么是进程 298
10.2 进程的结构 298
10.2.1 进程表 300
10.2.2 查看进程 300
10.2.3 系统进程 301
10.2.4 进程的调度 302
10.3 启动新的进程 303
10.3.1 等待进程 308
10.3.2 僵进程 310
10.3.3 输入和输出重定向 312
10.3.4 线程 313
10.4 信号 313
10.4.1 发送信号 317
10.4.2 信号集 321
10.5 本章总结 325
第11章 POSIX线程 326
11.1 什么是线程 326
11.2 检查有无线程支持 327
11.3 第一个线程程序 329
11.4 同时执行 332
11.5 同步 333
11.5.1 同信号量进行同步 333
11.5.2 用互斥量进行同步 337
11.6 线程的属性 341
11.6.5 scope属性 342
11.6.4 inheritsched属性 342
11.6.1 detachedstate属性 342
11.6.3 schedparam属性 342
11.6.2 schedpolicy属性 342
11.6.6 stacksize属性 343
11.6.7 线程属性--调度 344
11.7 取消一个线程 345
11.8 多线程 348
11.9 本章总结 350
第12章 进程间通信:管道 351
12.1 什么是管道 351
12.2 进程管道 352
12.2.1 popen函数 352
12.2.2 pclose函数 352
12.2.3 把输出送往popen 353
12.3 pipe函数 356
12.4 父进程和子进程 359
12.4.1 管道关闭后的读操作 361
12.4.2 把管道用做标准输入和标准输出 361
12.5 命名管道:FIFO文件 364
12.6 高级论题:以FIFO文件为基础的客户/服务器架构 372
12.7 CD唱盘管理软件 375
12.7.1 目标 376
12.7.2 实现 376
12.7.3 客户接口函数 380
12.7.4 服务器接口 385
12.7.5 管道 389
12.7.6 对CD唱盘管理软件的总结 394
12.8 本章总结 394
第13章 信号量、消息队列和共享内存 395
13.1 信号量 395
13.1.2 一个理论性的例子 396
13.1.1 信号量的定义 396
13.1.3 UNIX中的信号量功能 397
13.1.4 使用信号量 400
13.1.5 信号量总结 403
13.2 共享内存 403
13.2.1 概述 403
13.2.2 共享内存函数 404
13.3.1 概述 409
13.3 消息队列 409
13.2.3 共享内存总结 409
13.3.2 消息队列函数 410
13.3.3 消息队列总结 414
13.4 应用示例 414
13.5 查看IPC功能状态的命令 418
13.5.1 信号量 418
13.5.2 共享内存 418
13.6 本章总结 419
13.5.3 消息队列 419
14.1 什么是套接字 420
14.2 套接字连接 420
第14章 套接字 420
14.2.1 套接字属性 424
14.2.2 创建一个套接字 426
14.2.3 套接字地址 427
14.2.4 给套接字起名字 427
14.2.5 创建套接字队列 428
14.2.6 接受连接 428
14.2.7 请求连接 429
14.2.8 关闭一个套接字 430
14.2.9 套接字通信 430
14.2.10 主机字节顺序和网络字节顺序 432
14.3 网络信息 434
14.3.1 因特网守护进程 438
14.4 多客户 439
14.3.2 套接字选项 439
14.5 select系统调用 442
14.6 本章总结 447
第15章 工具命令语言Tcl 449
15.1 Tcl语言概述 449
15.1.1 第一个Tcl程序 449
15.1.2 Tcl命令 450
15.1.3 变量和值 451
15.1.4 引用和替换 452
15.1.5 计算 455
15.1.6 控制结构 456
15.1.7 错误处理 458
15.1.8 字符串操作 459
15.1.9 数组 464
15.1.10 列表 465
15.1.11 过程 470
15.1.12 输入和输出 471
15.2 一个Tcl程序 474
15.3 创建一个新Tcl语言 477
15.4 Tcl语言的扩展 478
15.4.1 expect 478
15.4.2 [incr Tcl] 478
15.4.3 TclX 478
15.4.4 图形 478
15.5 本章总结 479
第16章 X窗口系统的程序设计 480
16.1 什么是X 480
16.1.1 X服务器 480
16.1.4 X客户 481
16.1.5 X工具包 481
16.1.2 X协议 481
16.1.3 Xlib库 481
16.2 X窗口管理器 482
16.3 X程序设计模型 483
16.3.1 启动 483
16.3.2 主循环 484
16.4 X程序设计概述 485
16.5 Tk工具包 485
16.3.3 退出整理 485
16.5.1 窗口程序设计概述 487
16.5.2 配置文件 488
16.5.3 其他命令 489
16.5.4 Tk素材 489
16.5.5 Tk内建的对话框 515
16.5.6 颜色方案 518
16.5.7 字体 519
16.5.8 绑定 520
16.5.9 bindtags命令 521
16.5.10 几何尺寸管理 523
16.5.11 焦点及其切换 525
16.5.12 选项数据库 527
16.5.13 应用程序间的通信 528
16.5.14 selection命令 528
16.5.15 Clipboard命令 529
16.5.16 窗口管理器 530
16.5.17 动态/静态加载 531
16.5.18 Safe Tk 532
16.6 一个复合素材 533
16.7 使用复合型树素材的应用程序 543
16.8 Tk进程记录查看器 544
16.8.1 国际化 554
16.8.2 业界动态 554
16.9 本章总结 555
17.1 GNOME简介 557
第17章 使用GTK+进行GNOME程序设计 557
17.1.1 GNOME的体系结构 558
17.1.2 GNOME桌面 560
17.1.3 在GNOME里利用GTk+设计程序 560
17.1.4 GNOME应用程序 575
17.2 本章总结 583
第18章 Perl程序设计语言 584
18.1 Perl语言简介 584
18.1.2 Perl语言中的变量 585
18.1.1 “Hello”Perl程序 585
18.1.3 操作符和函数 588
18.1.4 规则表达式 593
18.1.5 控制结构和子例程 596
18.1.6 文件的输入和输出 599
18.2 一个完整的例子 600
18.3 命令行上的Perl 605
18.4.3 perldoc命令 607
18.4.2 安装一个模块 607
18.4.1 CPAN 607
18.4 模块 607
18.4.4 网络功能 608
18.4.5 数据库 609
18.5 改进版CD唱盘数据库 609
18.6 本章总结 613
第19章 因特网程序设计:HTML 614
19.1 什么是World Wide Web 614
19.2 术语 615
19.2.1 超文本传输协议 615
19.2.2 因特网邮件多媒体扩展 615
19.2.3 标准通用置标语言 615
19.2.4 文档类型定义 615
19.2.5 超文本置标语言 615
19.2.8 可扩展超文本置标语言 616
19.2.7 层叠样式表 616
19.2.6 可扩展置标语言 616
19.2.9 统一资源定位器 617
19.2.10 统一资源标识符 617
19.3 一个HTML文档 617
19.4 深入学习HTML 618
19.4.1 HTML标签 620
19.4.2 图像 625
19.4.3 表格 628
19.4.4 锚点或超链接 631
19.4.5 给图像加上锚点 633
19.4.6 非HTML的URL地址 635
19.4.7 链接到其他站点 635
19.5 编写HTML文件 637
19.6 HTML页面服务 638
19.6.1 网络中的HTML文档 638
19.6.2 设置一个服务器 639
19.7.1 服务器端可点击图片 640
19.7 可点击图片 640
19.7.2 客户端可点击图片 641
19.8 服务器端的预处理功能 641
19.9 编写WWW主页的技巧 644
19.10 本章总结 645
第20章 因特网程序设计II:CGI 646
20.1 表单元素 647
20.1.1 FORM标签 647
20.1.2 INPUT标签 647
20.1.3 SELECT标签 649
20.1.4 TEXTAREA标签 650
20.2 一个主页示例 650
20.3 向WWW服务器发送信息 653
20.3.1 对信息进行编码 653
20.3.2 服务器程序 654
20.3.3 编写服务器端的CGI程序 654
20.3.4 使用扩展URL的CGI程序 660
20.3.5 对表单数据进行解码 662
20.4 向客户返回HTML 668
20.5 技巧与窍门 671
20.5.1 确保CGI程序能够退出 671
20.5.2 对客户进行重定向 671
20.5.3 动态图形 671
20.5.4 隐藏上下文信息 672
20.6 一个应用程序 672
20.7 应用Perl语言 678
20.8 本章总结 683
第21章 设备驱动程序 685
21.1 设备 685
21.1.1 设备的分类 686
21.1.2 用户空间与内核空间 687
21.2 字符设备 693
21.3 字符设备驱动程序示例:Schar 695
21.3.2 字符设备的注册 696
21.3.1 MSG宏命令 696
21.3.3 模块的使用计数 697
21.3.4 open和release:设备的打开和关闭 698
21.3.5 文件操作read:从设备读出数据 699
21.3.6 current任务 700
21.3.7 等待队列 700
21.3.8 文件操作write:向设备写入数据 702
21.3.9 非阻塞性读操作 702
21.3.10 查找操作 703
21.3.11 文件操作ioctl:I/O控制 704
21.3.12 检查用户权限 706
21.3.13 文件操作poll:设备对进程的调度 706
21.3.14 模块的参数 709
21.3.15 proc文件系统接口 710
21.3.16 Schar的执行情况 712
21.4 定时和时基:jiffies变量 713
21.3.17 小结 713
21.4.1 短暂延时 715
21.4.2 定时器 715
21.4.3 让出处理器 718
21.4.4 任务队列 719
21.4.5 预定义任务队列 719
21.4.6 小结 721
21.5 内存管理 721
21.5.2 地址空间 722
21.5.1 虚拟内存区 722
21.5.3 内存地址的类型 723
21.5.4 在设备驱动程序里申请内存 723
21.5.5 在用户空间和内核空间之间传递数据 725
21.5.6 简单的内存映射 727
21.5.7 I/O内存 729
21.5.8 IOmap里的设备分配 730
21.5.9 对I/O内存实现mmap文件操作 731
21.6 I/O端口 733
21.6.1 可移植性 734
21.6.2 中断处理 734
21.6.3 IRQ处理器 737
21.6.4 中断的后处理 738
21.6.5 可重入性 739
21.6.6 单独禁止一个中断 740
21.6.7 原子化操作 740
21.6.8 对关键节进行保护 741
21.7 块设备 742
21.7.1 一个简单的RAM盘模块:Radimo 743
21.7.2 介质的更换 745
21.7.3 块设备的ioctl文件操作 746
21.7.4 请求函数:request 746
21.7.5 缓冲区缓存 748
21.8 调试 750
21.7.6 小结 750
21.8.1 Oops追查法 751
21.8.2 对模块进行调试 753
21.8.3 “魔术键” 753
21.8.4 内核调试器--KDB 754
21.8.5 远程调试 754
21.8.6 调试工作中的注意事项 754
21.9.2 字节的存储顺序 755
21.9.1 数据类型 755
21.9 可移植性 755
21.9.3 数据的对齐 756
21.10 本章总结 756
21.11 内核源代码解剖图 757
附录A 可移植性 758
附录B 自由软件基金会和GNU项目 766
附录C 因特网资源 772
附录D 参考书目 779
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《设计十六日 国内外美术院校报考攻略》沈海泯著 2018
- 《计算机辅助平面设计》吴轶博主编 2019
- 《高校转型发展系列教材 素描基础与设计》施猛责任编辑;(中国)魏伏一,徐红 2019
- 《景观艺术设计》林春水,马俊 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《Cinema 4D电商美工与视觉设计案例教程》樊斌 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《古代巴比伦》(英)莱昂纳德·W.金著 2019
- 《BBC人体如何工作》(英)爱丽丝.罗伯茨 2019
- 《一个数学家的辩白》(英)哈代(G.H.Hardy)著;李文林,戴宗铎,高嵘译 2019
- 《莎士比亚全集 2》(英)莎士比亚著,朱生豪等译 2002
- 《莎士比亚戏剧精选集》(英)威廉·莎士比亚(William Shakespeare)著 2020
- 《莎士比亚 叙事诗·抒情诗·戏剧》(英)威廉·莎士比亚著 2019
- 《亚历山大继业者战争 上 将领与战役》(英)鲍勃·本尼特,(英)麦克·罗伯茨著;张晓媛译 2019
- 《孩子们的音乐之旅 1 宝宝睡觉 幼儿版》包菊英主编 2016
- 《超级参与者》王金强责编;赵磊译者;(澳)杰里米·海曼斯,(英)亨利·蒂姆斯 2020
- 《物联网导论》张翼英主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019