当前位置:首页 > 工业技术
Linux编程技术详解
Linux编程技术详解

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

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:杜华编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2007
  • ISBN:711516679X
  • 页数:516 页
图书介绍:本书以循序渐进的方式,全面介绍了Linux编程相关的知识。内容涵盖了Linux基本知识、如何建立Linux开发环境、Linux开发工具、Linux文件系统、文件I/O操作、设备文件、进程与进程环境、守护进程、基本进程间通信方法、管道与命名管道、POSIX IPC、Linux下的多线程、Linux网络编程、网络嗅探器、Linux图形界面开发基础、GTK+图形界面编程、界面布局与按钮构件、GTK常用构件、对话框、菜单与工具条等。本书力求以全面的知识及丰富的实例来指导读者了解和掌握Linux编程的各个方面的知识。同时,书中提供了大量的实例,用以加深读者对于所介绍知识的理解。这些实例对于实际的项目开发同样具有很强的参考价值。本书通俗易懂,适合希望学习Linux编程的初学者、Linux程序员及对高校计算机相关专业的师生参考使用。
《Linux编程技术详解》目录

第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 Base 3

1.2.1 POSIX标准 3

1.2.2 Linux Standard Base 3

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

1.3.1 GNU介绍 4

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

1.4 内核就是Linux 4

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的LiveCD 12

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与APT 45

2.9.1 Yum介绍 46

2.9.2 APT介绍 46

2.9.3 使用APT配置开发环境 46

2.10 小结 47

第3章 Linux开发工具 49

3.1 文本编辑器:Vi 50

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 文本编辑器:Emacs 54

3.2.1 启动和退出Emacs 54

3.2.2 Emacs的基本编辑命令 54

3.3 源代码阅读工具:Source Insight 55

3.3.1 在Windows平台上的使用 55

3.3.2 在Linux平台上的使用 57

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

3.4.1 Taglist和Ctags介绍 57

3.4.2 安装Tag List和Ctags 57

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

3.5 源代码阅读工具:Vim+Cscope 62

3.5.1 Cscope的安装 62

3.5.2 Cscope的使用 64

3.5.3 Vim+Cscope的使用 65

3.5.4 Vim+Cscope阅读代码实例 67

3.6 源代码阅读工具:SlickEdit 68

3.6.1 安装SlickEdit 68

3.6.2 SlickEdit的使用 69

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

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与父进程ID 196

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 IPC 279

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-endian 343

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 编译libpcap 382

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 KDE 409

15.2.2 GNOME 409

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

相关图书
作者其它书籍
返回顶部