图书介绍

Linux应用程序开发 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Linux应用程序开发 第2版
  • (美)Michael K. Johnson,(美)Erik W. Troan著;武延军,郭松柳译 著
  • 出版社: 北京:电子工业出版社
  • ISBN:7121017954
  • 出版时间:2005
  • 标注页数:490页
  • 文件大小:22MB
  • 文件页数:511页
  • 主题词:Linux操作系统-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux应用程序开发 第2版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1部分 起步1

第1章 Linux的发展历史2

1.1 自由Unix软件简史2

1.2 Linux的发展3

1.3 Unix系统的概念谱系4

1.4 Linux谱系6

第2章 许可证和版权7

2.1 版权7

2.2 许可8

2.3.2 GNU库通用公共许可证9

2.3.1 GNU通用公共许可证9

2.3 自由软件许可证9

2.3.3 MIT/X/BSD风格的许可证10

2.3.4 旧BSD风格的许可证10

2.3.5 艺术许可证10

2.3.6 许可证的不兼容性10

第3章 在线系统文档11

3.1 man手册页11

3.2 info手册页12

3.3 其他文档12

第2部分 开发工具和环境13

第4章 开发工具14

4.1.1 Emacs15

4.1 编辑器15

4.1.2 vi16

4.2 Make16

4.2.1 复杂命令行18

4.2.2 变量19

4.2.3 后缀规则20

4.3 GNU的调试器21

4.4 跟踪程序行为24

第5章 gcc的选项和扩展26

5.1 gcc选项26

5.2.2 内联函数28

5.2.3 其他可选择的扩展关键字28

5.2.1 long long28

5.2 头文件28

5.2.4 属性29

第6章 GNU的C语言库30

6.1 特征选择30

6.2 POSIX接口32

6.2.1 POSIX要求的类型32

6.2.2 查找运行时的权能33

6.2.3 查找和设置基本系统信息34

6.3 兼容性35

第7章 内存调试工具36

7.1 存在Bug的代码36

7.2.1 发现内存堆的损坏38

7.2 glibc的内存检查工具38

7.2.2 使用mtrace()来跟踪分配情况40

7.3 利用mpr找到内存泄露42

7.4 利用valgrind发现内存错误43

7.5 电网48

7.5.1 使用电网48

7.5.2 内存对齐49

7.5.3 其他特性50

7.5.4 局限性50

7.5.5 资源消耗51

8.2 共享库52

8.1 静态库52

第8章 创建和使用库52

8.3 设计共享库53

8.3.1 管理兼容性54

8.3.2 不兼容的库54

8.3.3 设计兼容的库55

8.4 构造共享库55

8.5 安装共享库56

例子56

8.6 使用共享库57

8.6.1 使用无须安装的库58

8.6.2 提前装载库58

9.1 进程环境59

第9章 Linux系统环境59

9.2 理解系统调用60

9.2.1 系统调用的限制60

9.2.2 系统调用的返回码61

9.2.3 使用系统调用62

9.2.4 通用错误返回码63

9.3 查找头文件和库文件67

第3部分 系统编程69

第10章 进程模型70

10.1 定义进程70

10.1.1 使用线程的复杂性70

10.1.2 Linux的方式70

10.2.2 信用状71

10.2 进程属性71

10.2.1 pid及其生成71

10.2.3 文件系统用户标识符74

10.2.4 关于uid和gid的总结75

10.3 进程信息76

10.3.1 程序参数76

10.3.2 资源的使用78

10.3.3 建立使用限制79

10.4 进程基本元素80

10.4.1 创建子进程80

10.4.2 等待子进程结束81

10.4.3 运行新程序82

10.4.6 终止其他进程84

10.4.5 自我终止84

10.4.4 用vfork()更快速地创建进程84

10.4.7 转储内核文件信息85

10.5 简单子进程86

10.5.1 用system()运行和等待86

10.5.2 从进程读或写87

10.6 会话和进程组88

10.6.1 会话88

10.6.2 控制终端89

10.6.3 进程组89

10.6.4 孤儿进程组90

用ladsh运行外部程序91

10.7 介绍ladsh91

10.8 创建克隆103

第11章 简单的文件管理104

11.1 文件模式106

11.1.1 文件访问权限106

11.1.2 文件权限修饰符107

11.1.3 文件类型109

11.1.4 进程的umask109

11.2 基本的文件操作110

11.2.1 文件描述符110

11.2.2 关闭文件111

11.2.3 在文件系统中打开文件111

11.2.4 文件的读、写以及位置指针的移动112

11.2.5 局部读和写116

11.2.6 缩短文件117

11.2.7 同步文件118

11.2.8 其他操作118

11.3 查询和修改Inode信息119

11.3.1 查找Inode信息119

11.3.2 一个使用stat()的简单示例120

11.3.3 轻松确定访问权限122

11.3.4 改变文件的访问权限122

11.3.5 改变文件的所有者和组123

11.3.6 改变文件的时间戳123

11.3.7 Ext3扩展属性124

11.4.1 创建设备文件以及命名管道的目录项128

11.4 操作目录项128

11.4.2 创建硬链接130

11.4.3 使用符号链接131

11.4.4 删除文件132

11.4.5 重命名文件132

11.5 操作文件描述符132

11.5.1 改变打开文件的访问模式133

11.5.2 修改close-on-exec标志133

11.5.3 复制文件描述符133

11.6 创建无名管道134

11.7 对ladsh添加重定向134

11.7.1 数据结构135

11.7.2 修改代码136

第12章 信号处理138

12.1 信号的概念138

12.1.1 信号的生命周期138

12.1.2 简单信号139

12.1.3 可靠信号140

12.1.4 信号和系统调用141

12.2 Linux(和POSIX)信号系统的API142

12.2.1 发送信号142

12.2.2 使用sigset_t142

12.2.3 捕捉信号143

12.2.4 操作一个进程的信号掩码144

12.2.5 找到等待信号的集合145

12.2.6 等待信号146

12.3 有效信号146

描述信号150

12.4 编写信号处理程序151

12.5 重新打开日志文件152

12.6 实时信号155

信号队列和排序155

12.7 获取信号的信息157

12.7.1 得到一个信号的上下文157

12.7.2 使用信号发送数据162

第13章 高级文件操作165

13.1 多路输入输出165

13.1.1 非阻塞I/O167

13.1.2 用poll()实现多路传输168

13.1.3 使用select()的多路传输171

13.1.4 比较poll()和select()175

13.1.5 使用epoll进行多路传输177

13.1.6 比较poll()和epoll182

13.2 内存映射185

13.2.1 页对齐186

13.2.2 建立内存映射186

13.2.3 撤销映射区域190

13.2.4 同步内存区域到磁盘190

13.2.5 锁定内存区域191

13.3.1 文件锁192

13.3 文件锁定192

13.3.2 记录锁194

13.3.3 强制锁198

13.3.4 租赁文件199

13.4 read()和write()的替代方法202

13.4.1 分散/聚集的读和写202

13.4.2 忽略文件指针203

第14章 目录操作205

14.1 当前工作目录205

14.1.1 查找当前工作目录205

14.1.2 特殊文件“.”和“..”206

14.3.1 创建新目录207

14.3 创建和删除目录207

14.1.3 当前目录207

14.2 改变根目录207

14.3.2 删除目录208

14.4 读取目录的内容208

再次读取目录内容209

14.5 文件名匹配搜索210

14.5.1 使用子进程210

14.5.2 内在匹配搜索211

14.6 为ladsh增加目录和匹配功能215

14.6.1 增加cd和pwd215

14.6.2 增加文件名匹配查询216

14.7.1 使用ftw()219

14.7 遍历文件系统的树结构219

14.7.2 用nftw()函数进行文件树遍历220

14.7.3 实现find功能221

14.8 目录变更提示224

第15章 作业控制231

15.1 作业控制基础231

15.1.1 重新启动进程231

15.1.2 停止进程231

15.1.3 处理作业控制信号232

15.2 ladsh中的作业控制233

第16章 终端与伪终端238

16.1.2 控制终端239

16.1.1 终端实用函数239

16.1 tty操作239

16.1.3 终端所有权240

16.1.4 用utemper工具进行记录241

16.1.5 手工记录241

16.2 termios概述250

16.3 termios实例251

16.3.1 密码251

16.3.2 串行通信253

16.4 termios调试265

16.5 termios参考266

16.5.1 函数267

16.5.2 窗口大小269

16.5.4 输入模式标记270

16.5.3 标志位270

16.5.5 输出模式标记272

16.5.6 控制模式标记273

16.5.7 控制模式字符274

16.5.8 本地模式标记276

16.5.9 控制read()277

16.6 伪终端278

16.6.1 打开伪终端278

16.6.2 打开伪终端的简单方法279

16.6.3 打开伪终端的复杂方法280

16.6.4 伪终端范例284

17.1.1 理想的网络293

第17章 socket网络293

17.1 协议支持293

17.1.2 实际的网络294

17.1.3 让实际的网络变得理想294

17.1.4 地址295

17.2 实用函数295

17.3 基本套接字操作296

17.3.1 建立一个套接字296

17.3.2 建立连接297

17.3.3 将地址绑定到套接字298

17.3.4 等待连接298

17.3.5 连接到一个服务器299

17.4.1 Unix域地址300

17.3.6 找到连接地址300

17.4 Unix域套接字300

17.4.2 等待一个连接301

17.4.3 连接到一个服务器303

17.4.4 运行Unix域的示例304

17.4.5 未命名的Unix域套接字304

17.4.6 传递文件描述符304

17.5 基于TCP/IP协议的联网机器309

17.5.1 字节存储顺序309

17.5.2 IPv4地址310

17.5.3 IPv6地址311

17.5.4 IP地址的操作313

17.5.5 转换名称到地址315

17.5.6 转换地址到名称324

17.5.7 监听TCP连接329

17.5.8 TCP客户端应用程序331

17.6 使用UDP数据报333

17.6.1 创建一个UDP套接字334

17.6.2 发送和接收数据报334

17.6.3 一个简单的tftp服务器335

17.7 套接字错误341

17.8 旧的网络函数342

17.8.1 IPv4地址操作342

17.8.2 主机域名解析343

17.8.3 旧的主机信息查找范例344

17.8.4 查找端口号346

第18章 时间349

18.1 获取时间和日期349

18.1.1 时间和日期的表示349

18.1.2 时间的转换,格式化和解析351

18.1.3 时间的限制354

18.2 使用计时器355

18.2.1 休眠355

18.2.2 间隔计时器356

第19章 随机数359

19.1 伪随机数359

19.2 密码系统和随机数360

第20章 虚拟控制台编程362

20.1 起步363

20.2 发出蜂鸣声364

20.3 判断终端是否为虚拟控制台365

20.4 查找当前虚拟控制台365

20.5 管理虚拟控制台的切换366

20.6 范例:open命令368

第21章 Linux控制台370

21.1 权能数据库370

21.2 图标、字符和映射372

21.3 Linux控制台权能372

21.3.1 控制字符373

21.3.2 转义字符序列374

21.3.3 测试序列375

21.3.4 复杂转义字符序列375

21.4 直接写屏幕380

第22章 编写安全程序382

22.1 安全何时重要382

安全何时失效383

22.2 最小化攻击时机383

22.2.1 放弃权限384

22.2.2 采用辅助手段384

22.2.3 限制文件系统的访问385

22.3 常见的安全漏洞385

22.3.1 缓冲区溢出386

22.3.3 环境变量390

22.3.2 解析文件名390

22.3.4 运行Shell391

22.3.5 创建临时文件391

22.3.6 竞争状态和信号处理392

22.3.7 关闭文件描述符393

22.4 作为守护进程运行394

第4部 分开发库395

第23章 字符串的匹配396

23.1 匹配任意字符串396

23.2.1 Linux正则表达式397

23.2.2 正则表达式的匹配397

23.2 正则表达式397

23.2.3 一个简单的grep示例401

第24章 用S-Lang来处理终端407

24.1 输人处理407

24.1.1 初始化S-Lang的输入处理408

24.1.2 恢复终端状态409

24.1.3 从终端读取字符409

24.1.4 检查未决的输入409

24.2 输出处理409

24.2.1 初始化屏幕管理410

24.2.2 更新显示410

24.2.3 移动光标410

24.2.5 屏幕管理的框架程序411

24.2.4 结束屏幕管理411

24.2.7 输出到屏幕412

24.2.6 切换字符集412

24.2.8 画线和画矩形413

24.2.9 使用颜色416

第25章 基于散列的数据库函数库417

25.1 概述417

25.2 基本操作418

25.2.1 打开qdbm文件418

25.2.2 关闭数据库418

25.2.3 获得文件描述符419

25.2.4 同步数据库419

25.3.2 顺序读取记录420

25.3 读取记录420

25.3.1 读取特定的记录420

25.4 修改数据库421

25.4.1 增加记录421

25.4.2 删除记录421

25.5 实例421

第26章 解析命令行选项428

26.1 选项表429

26.1.1 定义选项429

26.1.2 嵌套选项表431

26.2 使用选项表431

26.2.1 创建上下文431

26.2.2 解析命令行432

26.2.3 剩余的参数433

26.2.4 自动帮助信息434

26.3 使用回调(callback)435

26.4 错误处理439

26.5 选项别名440

26.5.1 指定别名440

26.5.2 使别名生效441

26.6 解析参数字符串441

26.7 处理额外参数442

26.8 立用程序示例442

第27章 运行时动态加载443

动态加载(dl)接口444

示例445

第28章 用户识别和认证447

28.1 ID到名字的转换447

示例:id命令449

28.2 可挂接的认证模块452

28.2.1 PAM会话453

28.2.2 PAM操作454

附录461

附录A 头文件462

附录B Iadsh源文件463

词汇表481

参考文献487

热门推荐