图书介绍

Linux编程技术详解PDF|Epub|txt|kindle电子书版本网盘下载

Linux编程技术详解
  • 杜华编著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:711516679X
  • 出版时间:2007
  • 标注页数:516页
  • 文件大小:386MB
  • 文件页数:537页
  • 主题词:Linux操作系统-程序设计

PDF下载


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

下载说明

Linux编程技术详解PDF格式电子书版下载

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

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

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

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

图书目录

第1章 Linux基本知识1

1.1 Linux系统概述2

1.1.1 Linux的发展历史2

1.1.2 Linux与UNIX的关系2

1.1.3 Linux的发音3

1.2 POSIX标准与Linux Standard Base3

1.2.1 POSIX标准3

1.2.2 Linux Standard Base3

1.3 GNU和GNU通用公共许可证(GPL)4

1.3.1 GNU介绍4

1.3.2 GNU通用公共许可证(GPL)4

1.4 内核就是Linux4

1.5 文件系统分级结构标准(FHS)5

1.5.1 FHS简介5

1.5.2 Linux目录结构5

1.6 Linux系统结构6

1.7 小结7

第2章 Linux开发环境9

2.1 Linux发行版本介绍10

2.2 Linux的文件系统11

2.3 Linux的LiveCD12

2.4 Fedora Core 6的安装12

2.4.1 为Linux系统预留磁盘空间13

2.4.2 选择Fedora Core的系统语言14

2.4.3 为Fedora Core划分磁盘分区15

2.4.4 安装GRUB菜单并设置网络环境16

2.4.5 设置时区并定制安装软件16

2.5 Ubuntu Desktop 6.10的安装18

2.5.1 选择系统默认语言并设置时区18

2.5.2 添加用户并设置磁盘分区20

2.5.3 完成系统安装21

2.6 虚拟机简介与VMware的安装22

2.6.1 VMware简介23

2.6.2 Virtual PC介绍23

2.6.3 Xen介绍24

2.6.4 Linux平台下VMware WorkStation的安装24

2.7 在VMware WorkStation中安装Linux系统30

2.7.1 创建虚拟系统文件30

2.7.2 配置虚拟系统的硬件环境32

2.7.3 在虚拟系统中安装Linux系统34

2.7.4 向VMware虚拟机添加新硬件35

2.7.5 在Linux中使用新添加的硬件37

2.8 远程连接Linux服务器40

2.8.1 商业软件开发中的代码控制模式40

2.8.2 SSH服务介绍41

2.8.3 使用PuTTY登录SSH服务器42

2.8.4 开放X Window远程访问服务43

2.8.5 在Window系统中登录Linux图形用户界面44

2.9 包管理工具Yum与APT45

2.9.1 Yum介绍46

2.9.2 APT介绍46

2.9.3 使用APT配置开发环境46

2.10 小结47

第3章 Linux开发工具49

3.1 文本编辑器:Vi50

3.1.1 Vi编辑器的工作模式50

3.1.2 Vi编辑器的基本操作50

3.1.3 进入插入模式51

3.1.4 末行模式下的常用命令52

3.1.5 删除命令52

3.1.6 搜索及替换命令52

3.1.7 Vi加密文件53

3.1.8 在Vi中打开语法加亮和启用自动缩进功能53

3.2 文本编辑器:Emacs54

3.2.1 启动和退出Emacs54

3.2.2 Emacs的基本编辑命令54

3.3 源代码阅读工具:Source Insight55

3.3.1 在Windows平台上的使用55

3.3.2 在Linux平台上的使用57

3.4 源代码阅读工具:Vim+Taglist+Ctags57

3.4.1 Taglist和Ctags介绍57

3.4.2 安装Tag List和Ctags57

3.4.3 使用Vim+Taglist+Ctags阅读代码60

3.5 源代码阅读工具:Vim+Cscope62

3.5.1 Cscope的安装62

3.5.2 Cscope的使用64

3.5.3 Vim+Cscope的使用65

3.5.4 Vim+Cscope阅读代码实例67

3.6 源代码阅读工具:SlickEdit68

3.6.1 安装SlickEdit68

3.6.2 SlickEdit的使用69

3.7 基于Web的源代码阅读工具:Linux Cross-Reference70

3.8 Linux下的C/C++编译器71

3.8.1 编译器基础71

3.8.2 GNU GCC介绍71

3.8.3 使用GCC编译C代码72

3.8.4 使用GCC编译C++代码73

3.8.5 使用GCC控制编译过程74

3.9 应用GNU Make实现项目管理76

3.9.1 GNU Make介绍76

3.9.2 简单makefile示例77

3.9.3 makefile的语法78

3.9.4 Make工作流程80

3.9.5 makefile的隐含规则82

3.9.6 makefile的模式规则84

3.10 Linux下的调试工具84

3.10.1 GDB介绍84

3.10.2 使用GDB调试简单的用户程序85

3.10.3 GDB常用命令92

3.10.4 可视化DDD调试工具介绍97

3.10.5 DDD的安装98

3.10.6 使用DDD调试无运行参数的程序99

3.10.7 使用DDD调试带运行参数的程序101

3.10.8 GDB远程调试102

3.11 小结103

第4章 Linux文件和目录105

4.1 Linux目录106

4.1.1 Linux目录的基本概念与设备挂载106

4.1.2 虚拟文件系统介绍106

4.1.3 getcwd函数——获得当前工作目录107

4.1.4 pathconf函数——获得系统目录最大长度109

4.1.5 chdir,fchdir函数——更改当前工作目录110

4.1.6 mkdir、rmdir函数——创建和删除目录112

4.2 Linux文件114

4.2.1 Linux的文件实现114

4.2.2 文件描述符与文件指针115

4.2.3 文件的访问权限117

4.2.4 stat、fstate、lstat函数——获得文件信息118

4.2.5 chmod,fchmod函数——修改文件权限123

4.2.6 chown、fchown、lchown函数——修改文件的拥有者125

4.2.7 umask函数126

4.3 硬链接与符号链接128

4.3.1 硬链接129

4.3.2 符号链接129

4.3.3 创建或删除链接130

4.3.4 创建和删除符号链接131

4.4 综合实例:编写自己的ls命令132

4.4.1 ls命令功能分析132

4.4.2 具体模块划分133

4.4.3 目录文件列表获得模块134

4.4.4 信息输出模块136

4.4.5 具体代码实现示例136

4.5 小结140

第5章 文件I/O操作141

5.1 open与close函数142

5.1.1 open函数142

5.1.2 close函数144

5.2 creat函数145

5.3 read与write函数146

5.3.1 read函数146

5.3.2 write函数148

5.4 lseek函数150

5.5 dup与dup2函数152

5.6 小结154

第6章 设备文件155

6.1 设备文件简述156

6.2 Linux设备驱动工作流程157

6.3 终端设备157

6.4 终端控制159

6.4.1 使用stty命令显示终端设置159

6.4.2 重置终端参数159

6.4.3 获得当前终端名称160

6.4.4 使用tcgetattr函数与tcsetattr函数控制终端161

6.5 密码输入关闭回显的两种方法165

6.5.1 使用curses库165

6.5.2 使用tcgetattr函数和tcsetattr函数167

6.6 串口通信的基本概念168

6.6.1 串行通信与串口定义169

6.6.2 串口通信的基本参数169

6.7 在Linux下进行串口通信170

6.7.1 打开串口171

6.7.2 设置串口通信参数171

6.7.3 读写串口174

6.7.4 关闭串口174

6.8 综合实例:串口读写程序示例175

6.9 音频设备文件编程基础180

6.9.1 数字音频基础180

6.9.2 Linux下的音频设备文件180

6.9.3 访问音频设备文件基本步骤181

6.10 让扬声器发声182

6.11 Linux下声卡编程184

6.11.1 播放指定音频文件184

6.11.2 录制音频文件186

6.12 小结188

第7章 进程与进程环境189

7.1 进程分类190

7.1.1 交互进程190

7.1.2 批处理进程190

7.1.3 守护进程190

7.2 虚拟内存190

7.2.1 Linux系统虚拟内存的功能190

7.2.2 在Linux系统中查看虚拟内存的使用191

7.3 进程内存192

7.3.1 进程内存结构192

7.3.2 进程内存结构分析程序示例193

7.4 进程标识196

7.4.1 进程ID与父进程ID196

7.4.2 用户标识(UID)和有效用户标识(EUID)198

7.4.3 组标识(GID)和有效组标识(EGID)200

7.5 Linux进程相关系统调用201

7.5.1 fork函数201

7.5.2 vfork函数203

7.5.3 传统fork系统调用和vfork系统调用的区别203

7.5.4 fork函数与vfork函数区别示例203

7.5.5 Linux系统中实现fork系统调用的机制204

7.5.6 exec函数族205

7.5.7 exit、_exit函数与return的不同207

7.5.8 exit函数208

7.5.9 _exit函数209

7.5.10 exit函数与_exit函数区别210

7.5.11 wait函数210

7.5.12 使用kill函数发送信号212

7.5.13 用于检测退出状态的宏214

7.5.14 waitpid函数215

7.6 僵尸进程217

7.7 小结218

第8章 守护进程219

8.1 守护进程(daemon)介绍220

8.2 创建守护进程220

8.2.1 实现守护进程的步骤220

8.2.2 守护进程具体实现222

8.3 守护进程的日志实现224

8.3.1 syslogd守护进程224

8.3.2 syslogd守护进程配置文件说明224

8.3.3 守护进程日志的实现227

8.4 Client/Server工作模式230

8.5 综合实例:定时执行任务的守护进程230

8.6 小结230

第9章 基本进程间通信方法231

9.1 使用文件实现进程互斥232

9.1.1 使用文件实现进程互斥程序的模块划分232

9.1.2 使用文件实现进程互斥程序实例232

9.1.3 程序存在的问题235

9.2 Linux文件锁235

9.2.1 fcntl函数235

9.2.2 综合实例:使用fcntl实现进程互斥239

9.2.3 lockf函数241

9.2.4 flock函数244

9.3 信号的基本概念244

9.3.1 信号的产生方式244

9.3.2 捕获信号时的处理245

9.4 常见信号与信号分类245

9.4.1 查看Linux系统中支持的信号245

9.4.2 常见信号说明245

9.4.3 使用信号终止程序的执行247

9.4.4 信号分类247

9.5 产生信号248

9.5.1 kill函数248

9.5.2 raise函数248

9.5.3 alarm函数249

9.6 捕捉或忽略信号251

9.6.1 signal函数251

9.6.2 sigaction函数252

9.7 综合实例:实现对用户邮件的自动检测255

9.7.1 守护进程和信号处理模块256

9.7.2 新邮件判断模块258

9.7.3 主函数259

9.8 小结260

第10章 管道与命名管道261

10.1 管道262

10.1.1 管道的基本概念262

10.1.2 管道读写过程描述262

10.1.3 pipe函数与进程间通信263

10.1.4 使用管道实现进程间的双向通信265

10.2 综合实例:Shell管道重定向实现267

10.2.1 Shell重定向思想分析267

10.2.2 类似程序的设计267

10.3 popen函数与pclose函数269

10.3.1 popen函数269

10.3.2 pclose函数269

10.3.3 Shell管道重定向程序的再实现271

10.4 命名管道273

10.4.1 命名管道的基本概念273

10.4.2 在Shell中创建命名管道273

10.4.3 mkfifo函数274

10.5 小结277

第11章 POSIX IPC279

11.1 基本概念280

11.1.1 消息队列简介280

11.1.2 信号量简介280

11.1.3 共享内存简介280

11.1.4 IPC资源280

11.1.5 IPC标识符与关键字281

11.2 基本IPC命令282

11.2.1 ipcs命令282

11.2.2 ipcrm命令283

11.3 消息队列284

11.3.1 创建消息队列284

11.3.2 消息队列中的基本数据结构286

11.3.3 msgctl函数288

11.3.4 msgsnd函数291

11.3.5 msgrcv函数295

11.4 信号量297

11.4.1 临界区与信号量、信号量集298

11.4.2 创建信号量集298

11.4.3 信号量集中的semid_ds数据结构300

11.4.4 semctl函数301

11.4.5 信号量集操作305

11.5 共享内存309

11.5.1 创建共享内存309

11.5.2 共享内存的基本数据结构312

11.5.3 shmctl函数313

11.5.4 shmat函数316

11.5.5 shmdt函数317

11.6 小结320

第12章 Linux系统下的多线程321

12.1 多线程简介322

12.1.1 线程的基本概念322

12.1.2 线程分类322

12.1.3 多进程VS多线程322

12.2 创建线程与退出线程323

12.2.1 pthread_create函数323

12.2.2 pthread_exit函数324

12.3 基本线程管理325

12.4 线程属性327

12.4.1 初始化线程属性327

12.4.2 设置和获得线程分离状态328

12.4.3 设置和获得线程属性对象的作用域329

12.4.4 设置和获得线程属性对象的继承性330

12.4.5 设置和获得线程属性对象的调度策略331

12.4.6 设置和获得线程属性对象的调度参数332

12.4.7 实例:设置线程优先级332

12.5 线程同步335

12.6 互斥锁336

12.6.1 创建互斥锁336

12.6.2 互斥锁的加锁337

12.6.3 互斥锁的解锁338

12.7 线程同步实例338

12.8 小结340

第13章 Linx网络编程341

13.1 套接字编程基础342

13.1.1 套接字与端口342

13.1.2 套接字编程相关数据结构343

13.1.3 套接字类型343

13.1.4 big-endian与little-endian343

13.2 面向连接的套接字通信345

13.2.1 工作流程346

13.2.2 socket函数346

13.2.3 bind函数348

13.2.4 listen函数349

13.2.5 accept函数349

13.2.6 connect函数350

13.2.7 发送与接收数据351

13.2.8 关闭套接字353

13.3 UNIX domain中面向连接通信实现实例353

13.3.1 服务器端实现354

13.3.2 客户端实现355

13.3.3 程序运行结果分析356

13.4 Internet domain中面向连接通信实现实例357

13.4.1 服务器端实现357

13.4.2 客户端实现360

13.5 无连接的套接字通信362

13.5.1 工作流程362

13.5.2 recvfrom函数363

13.5.3 sendto函数363

13.6 UNIX domain中面向无连接通信实现实例364

13.6.1 服务器端实现364

13.6.2 客户端实现365

13.6.3 程序执行结果367

13.7 Internet domain中面向无连接通信实现实例367

13.7.1 服务器端实现367

13.7.2 客户端实现369

13.7.3 程序执行结果370

13.8 使用select实现多路I/O复用371

13.9 网络的多路I/O复用实现实例373

13.10 小结376

第14章 网络嗅探器377

14.1 网络嗅探器的基本原理378

14.1.1 共享型以太网378

14.1.2 交换型以太网378

14.1.3 网卡的工作模式379

14.1.4 网络嗅探器工作流程379

14.2 Wireshark(Ethereal)介绍379

14.2.1 Wireshark(Ethereal)简介380

14.2.2 Wireshark(Ethereal)的使用380

14.3 libpcap介绍与安装381

14.3.1 libpcap介绍381

14.3.2 配置编译环境381

14.3.3 编译libpcap382

14.3.4 安装编译出的文件382

14.4 使用libpcap开发网络嗅探器383

14.4.1 确定捕获网络数据包的网卡383

14.4.2 打开网络设备386

14.4.3 设置过滤条件387

14.4.4 获取数据包388

14.4.5 关闭网络设备394

14.5 基于libpcap的网络嗅探器实例395

14.6 小结405

第15章 Linux图形界面开发基础407

15.1 X Window系统简介408

15.1.1 X Window的历史408

15.1.2 X Window体系结构408

15.2 Linux桌面环境409

15.2.1 KDE409

15.2.2 GNOME409

15.3 Linux下的图形开发包410

15.3.1 GTK+简介410

15.3.2 GTK+的安装411

15.4 小结412

第16章 GTK+图形界面编程413

16.1 编写简单的图形界面程序414

16.1.1 简单GTK+程序示例414

16.1.2 程序分析414

16.1.3 设置窗口属性416

16.2 GTK+的信号与事件417

16.2.1 GTK+信号418

16.2.2 GTK+事件418

16.3 为程序添加信号处理和按钮420

16.3.1 原有程序存在的问题420

16.3.2 为程序添加事件、信号处理程序示例421

16.4 小结423

第17章 界面布局与按钮构件425

17.1 界面布局426

17.1.1 容器构件426

17.1.2 组装盒(GtkBox)与按钮盒(GtkButtonBox)427

17.1.3 表构件(GtkTable)432

17.1.4 固定容器构件(GtkFixed)435

17.1.5 布局容器构件(GtkLayout)438

17.2 按钮构件440

17.2.1 按钮中的信号440

17.2.2 双态按钮(GtkToggleButton)441

17.2.3 复选按钮(GtkCheckButton)444

17.2.4 单选按钮(GtkRadioButton)444

17.3 小结446

第18章 GTK+常用构件447

18.1 标签构件(GtkLabel)448

18.1.1 创建标签构件448

18.1.2 设置与获取标签文字448

18.1.3 标签构件使用实例448

18.2 列表构件(GtkList)450

18.2.1 列表构件中的信号450

18.2.2 创建列表构件450

18.2.3 列表构件的选择模式450

18.2.4 添加或删除列表构件中的项目451

18.3 编辑构件(GtkEntry)451

18.3.1 创建编辑构件451

18.3.2 设置和获取编辑构件中的内容452

18.3.3 修改编辑构件属性453

18.3.4 编辑构件的信号453

18.3.5 编辑构件使用实例454

18.4 组合框构件(GtkCombox)456

18.4.1 创建组合框构件456

18.4.2 设置组合框的内容456

18.4.3 组合框构件使用实例457

18.5 框架构件(GtkFrame)459

18.5.1 创建框架构件459

18.5.2 设置框架构件459

18.5.3 框架构件使用实例460

18.6 进度条构件(GtkProgressBar)462

18.6.1 创建进度条构件462

18.6.2 控制进度条462

18.6.3 使用定时器控制进度条的移动463

18.6.4 进度条构件使用实例464

18.7 小结466

第19章 对话框467

19.1 使用对话框468

19.1.1 创建对话框468

19.1.2 设置对话框大小469

19.2 文件选择对话框(GtkFileSelection)470

19.2.1 创建文件选择对话框470

19.2.2 显示或隐藏Fileop按钮472

19.2.3 定制文件选择对话框实例473

19.3 字体选择对话框(GtkFontSelectionDialog)477

19.3.1 函数介绍477

19.3.2 字体选择对话框使用实例478

19.4 小结481

第20章 菜单与工具条483

20.1 创建菜单484

20.1.1 菜单结构484

20.1.2 在程序中使用菜单484

20.1.3 菜单使用实例487

20.2 工具条(GtkToolbar)489

20.2.1 在程序中使用工具条489

20.2.2 工具条使用实例491

20.3 小结493

第21章 综合实例:ping程序的实现495

21.1 ping程序介绍496

21.1.1 ping程序的使用496

21.1.2 ping程序反馈信息分析497

21.2 Ping程序与ICMP协议498

21.2.1 ping程序分析498

21.2.2 ICMP协议简介499

21.3 ping程序的设计501

21.3.1 报文校验算法501

21.3.2 报文校验算法的具体实现501

21.3.3 ping程序主要流程503

21.3.4 IP包头与ICMP包头定义503

21.3.5 构造IP与ICMP数据包505

21.4 简单ping程序的实现507

21.5 ping程序的改进511

21.5.1 显示收到的ICMP数据包信息511

21.5.2 接收超时解决办法512

21.5.3 改进后程序代码与执行结果512

21.6 小结516

热门推荐