分享
 
 
 

Linux高级程序设计(第2版)

Linux高级程序设计(第2版)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  參考價格: 点此进入淘宝搜索页搜索
  分類: 图书,计算机与互联网,操作系统,Linux,Linux 编程开发,
  品牌: 杨宗德

基本信息·出版社:人民邮电出版社

·页码:432 页

·出版日期:2009年10月

·ISBN:7115213909/9787115213907

·条形码:9787115213907

·包装版本:第2版

·装帧:平装

·开本:16

·正文语种:中文

产品信息有问题吗?请帮我们更新产品信息。

内容简介《Linux高级程序设计(第2版)》以Linux操作系统(内核为2.6版本)为开发平台、GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux系统下编程环境及编程工具、文件管理(文件类型、ANSI以及POSIX标准下文件读写操作)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(管道、消息队列、共享内存)、进程间同步机制(信号量)、进程间异步机制(信号)、线程管理(创建、退出、取消等以及属性控制)、线程间同步(互斥锁、读写锁、条件变量)以及网络基本编程、高级应用等内容。

《Linux高级程序设计(第2版)》内容丰富、紧扣应用,适合从事Linux下C应用编程的人员阅读,也适合从事嵌入式Linux开发的人员阅读。

编辑推荐《Linux高级程序设计(第2版)》主要涵养了Linux下C应用层程序开发的大部分内容。编程基本工具GCC/GDB的使用方法,库文件的管理。ANSI标准I/O管理、POSIX标准I/O管理、普通文件和目录管理以及内存管理。

进程管理及进程间通信机制,包括同一台主机通信机制(无名管道、命名管道、信号、信号量、消息队列以及共享内存),网络主机间通信机制(socket)。

线程管理及线程问通信机制,包括互斥锁、条件变量、信号灯、信号和读写锁。由浅入深,按理沦分析→实际操作→案例分析的顺序组织内容

作者多年教学及工程实践的总结,整合了Linux程序设计的绝大多数知识点,涵盖Linux操作系统下C语言应用程序设计的所有关键内容

内容丰富 总结作者多年教学及工程经验,整合Linux程序设汁的绝大多数知识点,涵盖Linux操作系统下C语言应用程序设计的所有关键内容。循序渐进避开大量理论,按知识体系介绍→应用函数分析→应用案例开发的顺序写作,读者可以针对每个知识点进行编程演练。

案例指导 《Linux高级程序设计(第2版)》遵循案例教学思想,每一个知识点都对应一个应用程序,且所有代码都在教学实践过程中使用过,读者可以直接编译调试。

紧扣应用 《Linux高级程序设计(第2版)》所采用的开发平台为2.6内核,开发工具为GCC 4.0。

目录

第1章 Linux下C语言开发环境1

1.1 Linux操作系统简介2

1.1.1 Linux操作系统简介2

1.1.2 GNU/Linux简介3

1.1.3 相关术语介绍3

1.2 Linux开发初步5

1.2.1 Linux下C程序标准5

1.2.2 库函数和系统调用7

1.2.3 在线文档介绍9

1.2.4 获取错误信息10

1.3 部分常用工具简介11

1.3.1 tar打包器11

1.3.2 Linux常用命令及工具12

1.4 Linux下编码风格 16

1.4.1 GNU编码规范 16

1.4.2 Linux内核编码规范 17

第2章 Linux下C语言开发工具 20

2.1 常用编辑工具22

2.1.1 VIM编辑器22

2.1.2 Emacs编辑器 24

2.1.3 SourceInsight工具 25

2.2 GCC编译工具 29

2.2.1 GCC/G++简介 30

2.2.2 头文件及预处理结果分析 34

2.3 Make工具与Makefile文件 36

2.3.1 Make工具简介 36

2.3.2 Makefile常用规则 39

2.4 常用调试工具 41

2.4.1 GDB调试工具简介 41

2.4.2 GDB演示示例 42

2.4.3 GDB调试器常用语法 43

2.4.4 strace 45

2.4.5 GCC程序开发过程实例 46

2.5 Linux库文件使用与创建 49

2.5.1 Linux系统库文件管理的基本策略 49

2.5.2 Linux下静态库的创建与使用 50

2.5.3 Linux下共享库创建及使用 52

2.5.4 静态库与共享库的区别 54

2.6 Autoconf/Automake自动化工具 54

2.6.1 Autoconf/Automake工具介绍 54

2.6.2 Autoconf/Automake工具使用示例 55

第3章 Linux进程存储管理 61

3.1 Linux程序存储结构与进程结构 62

3.1.1 Linux可执行文件结构 62

3.1.2 Linux进程结构 63

3.1.3 C变量及函数存储类型 64

3.1.4 栈和堆的区别 69

3.1.5 示例:查看代码中各数据存储位置 70

3.1.6 常见内存错误示例分析 73

3.2 ANSIC内存管理API函数 74

3.2.1 内存分配的基本方式 74

3.2.2 示例:为程序申请动态内存空间 74

3.2.3 内存数据管理函数 78

3.3 常用Linux内存管理及调试工具 80

3.3.1 mcheck函数 80

3.3.2 Valgrind内存检测工具 82

3.4 Linux进程环境及系统限制 85

3.4.1 进程与命令参数 85

3.4.2 进程与环境变量 90

3.4.3 Linux系统限制 91

3.4.4 Linux时间管理 93

第4章 ANSIC文件管理 96

4.1 文件及文件流 98

4.1.1 文件与流的基本概念 98

4.1.2 标准流及流主要功能 99

4.1.3 文件流指针 100

4.1.4 缓冲区类型 101

4.1.5 指定流缓冲区 103

4.2 ANSIC标准文件I/O操作 105

4.2.1 打开关闭文件 105

4.2.2 读写文件流 107

4.2.3 文件流定位 111

4.2.4 实现文件拷贝操作示例 113

4.3 格式化输入/输出函数操作 114

4.3.1 printf/scanf函数分析 114

4.3.2 fprintf/fscanf函数分析 115

4.3.3 sprintf函数分析 116

4.3.4 sscanf函数分析 118

第5章 POSIX文件及目录管理 121

5.1 文件描述符与内核文件表项 122

5.1.1 文件流与文件描述符的区别 122

5.1.2 文件表结构图 123

5.1.3 文件描述符与文件流的转换操作 123

5.2 POSIX标准下文件IO管理 125

5.2.1 创建/打开/关闭文件126

5.2.2 文件控制fcntl 129

5.2.3 读/写文件内容 131

5.2.4 使用POSIXIO实现文件拷贝 133

5.2.5 文件定位 134

5.2.6 同步内核缓冲区 135

5.2.7 映射文件到内存 136

5.3 目录文件基本操作 137

5.3.1 打开/关闭目录文件 138

5.3.2 读写目录内容 138

5.3.3 定位目录位置 140

5.3.4 添加删除目录 140

5.3.5 当前工作路径操作 141

第6章 普通文件.连接文件及目录文件属性管理 143

6.1 Linux文件系统管理 144

6.1.1 Linux下VFS虚拟文件系统 144

6.1.2 ext2文件系统结构 145

6.1.3 目录文件及常规文件存储方法147

6.2 Linux系统下文件类型及属性147

6.2.1 Linux文件类型及权限147

6.2.2 Linux文件类型148

6.2.3 文件权限修饰位 151

6.2.4 文件访问权限位 152

6.3 Linux文件属性管理 153

6.3.1 读取文件属性 153

6.3.2 修改文件权限操作 156

6.3.3 修改系统umask值 157

6.3.4 修改文件的拥有者及组 158

6.3.5 用户名/组名与UID/GID的转换 159

6.3.6 创建/删除硬连接 160

6.3.7 符号连接文件特殊操作 161

6.3.8 文件时间属性修改与时间处理 162

6.4 应用示例:实现1s-1基本操作 164

6.4.1 需求及知识点涵盖 164

6.4.2 流程及源代码实现 164

第7章 Linux进程管理与程序开发 169

7.1 进程环境及进程属性 170

7.1.1 进程资源 170

7.1.2 进程状态 170

7.1.3 进程基本属性 172

7.1.4 进程用户属性 176

7.2 进程管理及控制 179

7.2.1 创建进程 179

7.2.2 在进程中运行新代码 185

7.2.3 等待进程结束 189

7.2.4 退出进程 191

7.2.5 修改进程用户相关信息 194

7.2.6 进程调度管理函数 197

7.3 Linux特殊进程 202

7.3.1 守候进程及其创建过程 202

7.3.2 日志信息及其管理 203

7.3.3 守候进程应用示例 205

7.3.4 孤儿进程与僵死进程 207

第8章 进程间通信——管道和信号 210

8.1 进程间通信——PIPE 212

8.1.1 无名管道概念 212

8.1.2 无名管道管理及应用 212

8.1.3 文件描述符重定向 2 15

8.1.4 实现who|sort 218

8.1.5 流重定向 2 20

8.2 进程间通信——FIFO 2 21

8.2.1 有名管道概念 2 21

8.2.2 有名管道管理及应用 222

8.2.3 管道基本特点总结 225

8.3 信号中断处理 226

8.3.1 Linux常见信号与处理 226

8.3.2 产生信号 229

8.3.3 信号处理与signal安装信号 233

8.3.4 sigaction安装信号 234

8.3.5 信号集与屏蔽信号 238

8.3.6 等待信号 244

8.3.7 信号应用示例 246

第9章 SystemV进程间通信 250

9.1 SystemVIPC基础 252

9.1.1 key值和ID值 252

9.1.2 拥有者及权限 254

9.2 消息队列 254

9.2.1 消息队列IPC原理 254

9.2.2 Linux消息队列管理 257

9.2.3 消息队列应用实例 259

9.3 信号量通信机制 264

9.3.1 信号量IPC原理 264

9.3.2 Linux信号量管理操作 265

9.3.3 SEM_UNDO参数的应用 270

9.3.4 使用信号量实现生产消费问题 272

9.4 共享内存 275

9.4.1 共享内存IPC原理 275

9.4.2 Linux共享内存管理 276

9.4.3 共享内存的权限管理示例 278

9.4.4 共享内存处理应用示例 279

9.4.5 共享内存处理应用示例 281

第10章 Linux多线程编程 285

10.1 线程基本概念与线程操作 286

10.1.1 线程与进程的对比 286

10.1.2 创建线程 287

10.1.3 线程退出与等待 288

10.1.4 取消线程 291

10.1.5 线程与私有数据 294

10.2 线程属性控制 297

10.2.1 线程ID 298

10.2.2 初始化线程属性对象 298

10.2.3 获取/设置线程detachstate属性 299

10.2.4 获取/设置线程栈相关属性 300

10.2.5 线程属性控制实例 301

10.3 线程调度策略 303

10.3.1 获取/设置线程属性调度属性 303

10.3.2 获取/设置指定线程调度属性 305

第11章 线程间同步机制 309

11.1 互斥锁通信机制 310

11.1.1 互斥锁基本原理 310

11.1.2 互斥锁基本操作 310

11.1.3 互斥锁应用实例 311

11.2 条件变量通信机制 313

11.2.1 条件变量基本原理 313

11.2.2 条件变量基本操作 3 15

11.2.3 条件变量应用实例 3 16

11.3 读写锁通信机制 3 20

11.3.1 读写锁基本原理 3 20

11.3.2 读写锁基本操作 3 20

11.3.3 读写锁应用实例 322

11.4 线程与信号 3 25

11.4.1 线程信号管理 3 25

11.4.2 线程信号应用实例 3 26

第12章 Linuxsocket网络编程 3 29

12.1 网络通信基础 3 30

12.1.1 TCP/IP协议簇基础 3 30

12.1.2 IPV4协议基础 3 31

12.1.3 网络数据包封包与拆包过程3 34

12.2 BSDSocket网络通信编程 339

12.2.1 BSDTCP通信编程流程 339

12.2.2 BSDUDP通信编程流程 341

12.2.3 BSDSocket网络编程API 342

12.2.4 使用AF_UNIX实现本机数据流通信示例 349

12.2.5 使用AF_INET实现UDP点对点通信示例 352

12.3 使用TCP实现简单聊天程序 354

12.3.1 服务器端代码分析 355

12.3.2 客户器端代码分析 357

第13章 网络编程工具介绍 359

13.1 地址处理函数说明 360

13.1.1 大小端问题与网络字节顺序 360

13.1.2 字节顺序处理函数 361

13.1.3 点分十进制IP地址与二进制IP地址转换 363

13.1.4 通过IP地址获取网络ID和主机ID 365

13.2 域名与IP信息解析 365

13.2.1 Linux下域名解析过程 365

13.2.2 通过域名返回主机信息 366

13.2.3 通过域名和IP返回主机信息 367

13.2.4 getaddrinfo获取主机信息 368

13.3 控制socket文件描述符属性 371

13.3.1 set/getsockopt()修改socket属性 371

13.3.2 fcntl控制socket 374

13.3.3 ioctl控制文件描述符 374

13.4 网络调试工具 377

13.4.1 tcpdump的使用 378

13.4.2 netstat工具使用 380

13.4.3 lsof工具使用 381

第14章 网络编程高级应用 383

14.1 I/O阻塞与非阻塞操作应用 384

14.1.1 非阻塞处理方法 384

14.1.2 非阻塞应用示例 384

14.2 socket多路复用技术 388

14.2.1 select()函数介绍 388

14.2.2 pselect()函数 390

14.2.3 多路选择应用示例 390

14.3 socket信号驱动 396

14.3.1 各类I/O操作比较 396

14.3.2 SIGIO信号处理机制 397

14.3.3 UDP信号驱动实现应用示例 398

14.4 UDP广播与组播通信 401

14.4.1 广播地址与广播通信 401

14.4.2 组播地址与组播通信 403

14.4.3 UDP广播应用示例 404

14.4.4 UDP组播应用示例 407

14.5 原始套接口基本应用 412

14.5.1 原始套接口基本原理 412

14.5.2 原始套接口应用示例 412

第15章 构建网络服务器 4 15

15.1 多客户端实现 4 16

15.1.1 多进程实现多客户端 4 16

15.1.2 多线程实现多客户端 4 20

15.2 基于xinetd的网络服务应用 4 20

15.2.1 xinetd服务介绍 4 21

15.2.2 应用示例 422

15.3 构建简单的HTTP网络服务器 423

15.3.1 服务器运行及测试结果 4 24

15.3.2 主函数运行流程 4 25

15.3.3 支撑函数 4 27

……[看更多目录]

序言《Linux高级程序设计》一书主要介绍Linux应用层程序开发中所涉及的系统调用,主要包括文件管理。进程管理。进程间通信与同步。线程管理。线程间同步以及网络编程等内容。要求读者有较好的C语言及数据结构基础。网络技术基础。。

Linux应用开发是目前最为广泛的软件开发内容之一,同时也是从事Linux内核及驱动开发的基础。《Linux高级程序设计》一书出版以来,收到了大量的读者来信,对本书提出了各种意见和建议,综合各方面的考虑,笔者做了大量的改进,推出了它的第2版。这次修订的原则是:

(1)保持和加强原书优点,如理论观点鲜明,注重实际与应用,并添加新的案例,

(2)在内容上去旧更新,不仅修正了第1版中的错误和疏漏之处,更对原版的章节。内容进行了更新和补充,力求删繁就简。

本书修订内容如下。

第1章:精简文字,修订部分笔误,更新编程错误处理办法。

第2章:精简文字,修订部分笔误,删除部分冗余内容,包括对GCC、GDB、Makefile介绍的内容。增加部分工具说明。

第3章:精简文字,修订部分笔误,并对命令行参数匹配。进程基本环境等进行介绍。

第4章:修订格式化输入输出节内容,增加sscanf/sprintf函数应用内容,并增加部分应用案例,主要包括流类型的判断。简单shell命令(例如cp)实现等。

第5章:对各函数说明及应用案例进行更新,并增加目录流编程内容。

第6章:对链接文件操作函数进行分类归纳整理,并以ls-1应用案例总结第4、5、6章内容。

第7章:对进程创建。进程属性等内容进行修订,添加守候进程以及日志管理的内容,并对孤儿进程。僵死进程进行比较。

第8章:精简文字,修订部分笔误,添加了重定向案例,并对信号处理一节进行了总结,更新了各函数的应用案例。

第9章:增加双向队列传递应用案例。信号量生产消费问题案例以及信号量的非阻塞应用案例。

第10章:精简文字,修订部分笔误,增加线程私有数据介绍以及各函数应用代码。

第11章:精简文字,修订部分笔误。增加线程在信号处理方面的内容。

第12章:精简文字,修订部分笔误。增加UDP。TCP同步及异步通信案例。

新增第13章:对网络编程部分专用函数,包括大小端与字节顺序。socket属性。地址解析。网络调试工具等相关内容进行介绍。

新增第14章:增加对TCP及UDP高级编程的介绍,包括TCP多路选择。TCP非阻塞。信号驱动。UDP广播。UDP组播等内容。

新增第15章:增加网络服务器构建案例,并以构建HTTP服务器为例,介绍了包括文件及目录管理,进行线程管理及通信。网络编程内容,从而使读者学以致用。

在第2版中还增加了大量应用案例,特别是增加了大量网络编程内容,以求为读者进行Linux应用程序开发提供一条扎实的进阶之路

本书还提供了完整的代码和教案,方便广大师生使用

文摘插图:

Linux高级程序设计(第2版)

第1章 Linux下C语言开发环境

1.1 Linux操作系统简介

1.1.1 Linux操作系统简介

UNIX操作系统于1969年由Ken Thompson在AT&T贝尔实验室的一台DEC PDP-7计算机上实现。后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再加工和编写,使得UNIX能够很容易地移植到其他硬件的计算机上。由于此时AT&T还没有把UNIX作为它的正式商品,因此研究人员只是在实验室内部使用并完善它。正是由于UNIX是被作为研究项目,其他科研机构和大学的计算机研究人员也希望能得到这个系统,以便进行自己的研究。AT&T采用分发许可证的方法,大学和研究机构仅仅需要很少的费用就能获得UNIX的源代码以进行研究。UNIX的源代码被散发到各个大学,一方面使得科研人员能够根据需要改进系统,或者将其移植到其他的硬件环境中去,另一方面培养了大量懂得UNIX使用和编程的学生,这使UNIX的使用更为普及。

到了20世纪70年代末,在UNIX发展到版本6之后,AT&T认识到了UNIX的价值,并成立了UNIX系统实验室(UNIX System Lab,USL)来继续发展UNIX。因此一方面AT&T继续发展内部使用的UNIX版本7,一方面由USL开发对外正式发行的UNIX版本,同时AT&T也宣布对UNIX产品拥有所有权。几乎在同时,加州大学伯克利分校计算机系统研究小组(CSRG)借助UNIX对操作系统进行了研究,他们对UNIX进行的改进相当多,增加了很多当时非常先进的特性,包括更好的内存管理、快速且健壮的文件系统等,大部分原有的源代码都被重写,很多其他的UNIX使用者,包括其他大学和商业机构,都希望能得到经CSRG改进的UNIX系统。因此CSRG的研究人员把他们的UNIX组成一个完整的UNIX系统——BSD UNIX(Berkeley Software Distribution)向外发行。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
>>返回首頁<<
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有