图书介绍
Linux程序设计PDF|Epub|txt|kindle电子书版本网盘下载
![Linux程序设计](https://www.shukui.net/cover/19/31443736.jpg)
- (英)Neil Matthew,(英)Richard Stones著;杨晓云等译 著
- 出版社: 北京:机械工业出版社
- ISBN:7111093224
- 出版时间:2002
- 标注页数:782页
- 文件大小:67MB
- 文件页数:801页
- 主题词:
PDF下载
下载说明
Linux程序设计PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
序言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 什么是shell16
2.2 管道和重定向17
2.2.1 对输出数据进行重定向17
2.2.2 对输入数据进行重定向18
2.2.3 管道19
2.3 可以被视为程序设计语言的shell19
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 启动gdb281
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 深入学习gdb288
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 ElectricFence294
9.6.2 Checker295
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 把输出送往popen353
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章 工具命令语言Tcl449
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 expect478
15.4.2 [incr Tcl]478
15.4.3 TclX478
15.4.4 图形478
15.5 本章总结479
第16章 X窗口系统的程序设计480
16.1 什么是X480
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 Tk532
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 命令行上的Perl605
18.4.3 perldoc命令607
18.4.2 安装一个模块607
18.4.1 CPAN607
18.4 模块607
18.4.4 网络功能608
18.4.5 数据库609
18.5 改进版CD唱盘数据库609
18.6 本章总结613
第19章 因特网程序设计:HTML614
19.1 什么是World Wide Web614
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 深入学习HTML618
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:CGI646
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 向客户返回HTML668
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 字符设备驱动程序示例:Schar695
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盘模块:Radimo743
21.7.2 介质的更换745
21.7.3 块设备的ioctl文件操作746
21.7.4 请求函数:request746
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 内核调试器--KDB754
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