《Linux C程序基础与实例讲解》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:刘冰,赵廷涛,邵文豪等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302211839
  • 页数:527 页
图书介绍:本书讲解了如何在Linux下进行C语言程序开发。以编程实践贯穿全书内容,主要分基础、实践和综合应用三大部分。

基础篇 3

第1章 Linux基础 3

1.1 Linux概述 4

1.1.1 Linux简介 4

1.1.2 Linux的特点 5

1.1.3 Linux当前的应用趋势 7

1.2 Linux命令 8

1.3 文件与目录操作常用命令 11

1.3.1 文件/目录创建 11

1.3.2 文件/目录删除 13

1.3.3 文件/目录复制 14

1.3.4 文件/目录属性修改 15

1.3.5 文件/目录重命名 17

1.4 系统运行常用命令 18

1.4.1 显示当前进程 18

1.4.2 删除指定进程 20

1.4.3 管道定向命令 20

1.5 查找操作命令 21

1.5.1 grep命令 22

1.5.2 find命令 23

1.6 其他常用命令 24

1.6.1 文件系统挂载与卸载 24

1.6.2 系统关机 25

1.6.3 增加/删除用户 26

1.6.4 设置用户密码 28

1.7 本章小结 28

第2章 Shell编程 29

2.1 Shell编程简介 30

2.1.1 什么是Shell 30

2.1.2 Shell分类 30

2.1.3 Shell特点 31

2.1.4 Shell例子与执行方式 31

2.2 Shell基本语法 32

2.2.1 Shell变量 32

2.2.2 Shell通配符 33

2.2.3 Shell输入 34

2.2.4 Shell输出 34

2.2.5 Shell数组 35

2.2.6 Shell环境变量 37

2.3 Shell控制语句 38

2.3.1 if语句 39

2.3.2 case语句 41

2.4 Shell循环语句 42

2.4.1 for语句 42

2.4.2 while语句 43

2.4.3 until语句 44

2.5 Shell函数 45

2.5.1 Shell函数与函数原型 45

2.5.2 Shell函数的参数与返回值 46

2.6 本章小结 48

习题 48

第3章 C语言基础 49

3.1 C语言概述 50

3.1.1 C语言的发展及其应用 50

3.1.2 Linux与C语言 51

3.2 基本数据类型与运算 51

3.2.1 基本数据类型 51

3.2.2 基本运算规则 53

3.2.3 基本程序结构 54

3.2.4 程序预处理 56

3.2.5 构造数据类型 59

3.3 函数 62

3.3.1 函数的定义 62

3.3.2 函数调用 64

3.3.3 局部变量与全局变量 68

3.4 数组与指针 70

3.4.1 一维数组的定义与使用 70

3.4.2 多维数组 71

3.4.3 指针的定义与使用 73

3.4.4 指针与数组 74

3.4.5 字符串的处理 76

3.5 文件操作 77

3.5.1 C语言文件操作概述 78

3.5.2 文件的打开与关闭 78

3.5.3 文件操作函数 79

3.6 本章小结 83

习题 84

第4章 文件编程 85

4.1 Linux下的文件系统 86

4.1.1 文件系统概述 86

4.1.2 文件和目录特性 86

4.1.3 VFS基本数据结构 88

4.2 标准文件操作 88

4.2.1 底层文件操作函数 88

4.2.2 标准文件操作函数 92

4.3 目录操作 99

4.3.1 目录数据结构 99

4.3.2 目录的创建与删除 99

4.3.3 目录的打开、读取与关闭 101

4.3.4 目录属性的设置与读取 103

4.4 本章小结 105

习题 105

第5章 数据库编程基础 107

5.1 数据库技术概述 108

5.1.1 数据库技术简介 108

5.1.2 关系数据库标准语言SQL 108

5.1.3 Linux下的数据库 110

5.2 MySQL 112

5.2.1 MySQL语言介绍 113

5.2.2 MySQL分发包的下载 115

5.2.3 MySQL分发包的安装步骤 117

5.2.4 MySQL的配置 119

5.2.5 MySQL的基本使用 119

5.3 数据库操作API 121

5.3.1 连接MySQL数据库 122

5.3.2 数据查询函数 124

5.3.3 数据添加函数 126

5.3.4 数据删除函数 127

5.4 本章小结 128

习题 128

第6章 Linux进程编程 129

6.1 进程的概念 130

6.1.1 进程概述 130

6.1.2 Linux进程 131

6.2 Linux进程操作 133

6.2.1 进程的创建 133

6.2.2 进程的管理与调度 134

6.2.3 进程的终止 136

6.3 进程间通信 138

6.3.1 信号 138

6.3.2 命名管道技术 141

6.3.3 信号量 145

6.3.4 消息队列 148

6.3.5 共享内存 151

6.4 本章小结 152

习题 152

第7章 Linux多线程 155

7.1 Linux多线程概述 156

7.1.1 多线程原理介绍 156

7.1.2 Linux中的多线程 156

7.2 Linux多线程操作 157

7.2.1 线程创建函数 157

7.2.2 线程终止函数 157

7.3 线程属性设置 159

7.3.1 绑定属性 159

7.3.2 分离属性 160

7.3.3 调度属性 160

7.3.4 堆栈属性 162

7.4 多线程同步技术 162

7.4.1 互斥量 163

7.4.2 条件变量 165

7.4.3 信号量 168

7.5 本章小结 168

习题 169

第8章 Linux工具使用 171

8.1 文本编辑器 172

8.1.1 Vi/VIM 172

8.1.2 gedit 176

8.1.3 Emacs 177

8.1.4 KDevelop 178

8.1.5 Eclipse For CDT 178

8.2 GCC深度使用 179

8.2.1 GCC基本使用 179

8.2.2 GCC命令分类 183

8.3 GDB使用 186

8.3.1 GDB命令 187

8.3.2 GDB命令分类 188

8.3.3 GDB命令使用 190

8.4 Make使用 196

8.4.1 什么是Make 196

8.4.2 Makefile规则 197

8.4.3 Makefile变量 200

8.4.4 Make的执行 202

8.4.5 一个多文件编译示例 203

8.5 本章小结 206

第9章 基本网络编程 207

9.1 TCP/IP原理 208

9.1.1 TCP/IP协议基础 208

9.1.2 IP协议介绍 209

9.1.3 TCP协议介绍 211

9.1.4 UDP协议介绍 213

9.1.5 ICMP协议介绍 214

9.2 基本套接字技术 214

9.2.1 套接字技术简介 214

9.2.2 基本数据结构 216

9.3 常用套接字函数 218

9.3.1 socket()函数 218

9.3.2 bind()函数 219

9.3.3 listen()函数 220

9.3.4 accept()函数 220

9.3.5 connect()函数 221

9.3.6 send()函数 222

9.3.7 recv()函数 223

9.3.8 sendto()函数 223

9.3.9 recvfrom()函数 224

9.4 面向连接编程 225

9.4.1 开发流程 225

9.4.2 实例 227

9.4.3 实例运行 230

9.5 无连接编程 231

9.5.1 对等通信流程 231

9.5.2 实例 232

9.5.3 实例运行 233

9.6 本章小结 234

第10章 高级Socket编程 235

10.1 设置套接字 236

10.2 Select技术 240

10.2.1 Select技术简介 240

10.2.2 原理解析 241

10.2.3 实例操作 243

10.3 原始套接字技术 247

10.3.1 原始套接字技术简介 247

10.3.2 流程解析 248

10.3.3 实例操作 249

10.4 广播技术 253

10.4.1 广播技术简介 253

10.4.2 原理解析 254

10.4.3 实例操作 254

10.5 组播技术 258

10.5.1 组播技术简介 258

10.5.2 编程流程 258

10.5.3 实例操作 260

10.6 本章小结 263

实践篇 267

第11章 STL库编程 267

11.1 STL简介 268

11.1.1 STL概述 268

11.1.2 STL的相关概念 268

11.1.3 STL的各种版本实现 268

11.1.4 STL的组成 269

11.1.5 STL在Linux下的编译 270

11.1.6 STL的优点 270

11.2 容器的应用 270

11.2.1 list容器 271

11.2.2 vector容器 277

11.2.3 stack容器 280

11.2.4 map容器 281

11.2.5 set容器 285

11.2.6 hash_set容器 288

11.3 算法的应用 290

11.3.1 排序算法 291

11.3.2 查找算法 295

11.4 迭代器 298

11.5 本章小结 299

习题 299

第12章 Linux GTK 301

12.1 Linux图形编程 302

12.2 GTK部署 302

12.2.1 GTK安装准备 302

12.2.2 GTK安装 303

12.2.3 GTK测试 305

12.3 GTK开发基础 306

12.3.1 GTK数据类型 306

12.3.2 GTK控件 307

12.3.3 GTK消息机制 308

12.4 一个简单的GTK窗口例子 311

12.5 本章小结 313

习题 313

第13章 GTK控件编程 315

13.1 标签控件 316

13.1.1 标签创建与属性设置 316

13.1.2 标签事件 317

13.1.3 标签示例 317

13.2 按钮控件 319

13.2.1 一般按钮 319

13.2.2 开关按钮 321

13.2.3 复选按钮 322

13.2.4 单选按钮 322

13.3 图像控件 325

13.3.1 图像控件创建 325

13.3.2 设置图像控件属性 326

13.3.3 图像控件应用举例 327

13.4 文本输入控件 328

13.4.1 单行文本输入控件 328

13.4.2 多行文本编辑框 329

13.4.3 文本输入控件应用举例 330

13.5 对话框 333

13.5.1 创建对话框 333

13.5.2 对话框应用举例 334

13.6 文件选择控件 338

13.6.1 文件选择控件的创建与属性设置 338

13.6.2 文件选择控件应用举例 339

13.7 菜单 340

13.7.1 手动创建菜单 340

13.7.2 菜单应用举例 342

13.8 容器与布局 344

13.8.1 组装盒 344

13.8.2 表格 345

13.8.3 固定容器 347

13.8.4 布局容器 348

13.8.5 分割面板容器 348

13.8.6 分页显示容器 350

13.9 本章小结 352

习题 353

第14章 Linux基本应用实例解析 355

14.1 字符串函数库的设计与实现 356

14.1.1 问题描述 356

14.1.2 需求分析 356

14.1.3 字符串复制模块 357

14.1.4 字符串连接模块 358

14.1.5 字符串比较模块 359

14.1.6 字符串查找模块 361

14.1.7 字符串大小写转换模块 362

14.1.8 静态库的制作 363

14.2 通讯录管理系统 365

14.2.1 需求分析 365

14.2.2 系统架构 367

14.2.3 交互式模块设计与实现 369

14.2.4 增加模块设计与实现 370

14.2.5 查找模块设计与实现 372

14.2.6 删除模块设计与实现 373

14.2.7 修改模块设计与实现 374

14.2.8 数据读取模块设计与实现 374

14.2.9 数据保存模块设计与实现 376

14.2.10 数据导出模块设计与实现 376

14.2.11 列表模块设计与实现 378

14.2.12 整合测试 379

14.3 字符设备驱动程序设计 380

14.3.1 驱动程序简介 380

14.3.2 Hello Linux实现 381

14.3.3 字符驱动程序开发流程 383

14.3.4 字符驱动程序实现 385

14.3.5 字符驱动程序测试 388

14.4 本章小结 389

综合应用篇 393

第15章 高性能网络服务程序设计 393

15.1 高性能网络服务程序简介 394

15.1.1 高性能网络服务程序分类 394

15.1.2 客户端设计 399

15.2 多进程网络服务程序设计 404

15.2.1 原理分析 404

15.2.2 系统实现 406

15.2.3 测试运行 409

15.3 多线程网络服务程序设计 410

15.3.1 原理分析 410

15.3.2 系统架构 412

15.3.3 测试运行 415

15.4 线程池网络服务程序设计 416

15.4.1 原理分析 416

15.4.2 架构 417

15.4.3 源码实现 421

15.4.4 测试运行 425

15.5 本章小结 427

第16章 网络安全实例解析 429

16.1 网络扫描程序的开发 430

16.1.1 网络扫描简介 430

16.1.2 端口扫描技术简介 431

16.1.3 需求分析 432

16.1.4 模块划分 433

16.1.5 交互式模块实现 434

16.1.6 全连接扫描模块的实现 436

16.1.7 多线程全连接扫描模块的实现 439

16.1.8 半连接扫描模块的实现 442

16.1.9 测试运行 448

16.2 Libpcap库使用 450

16.2.1 Libpcap简介 451

16.2.2 Libpcap的安装与使用 452

16.2.3 Libpcap的工作原理 454

16.2.4 嗅探实例 458

16.3 本章小结 466

第17章 HTTP服务器设计与实现 467

17.1 HTTP协议 468

17.1.1 HTTP协议简介 468

17.1.2 HTTP的工作原理 469

17.1.3 HTTP请求信息格式 470

17.1.4 HTTP协议响应信息 474

17.2 HTTP服务器设计 475

17.2.1 系统功能需求 475

17.2.2 总体功能划分 476

17.2.3 模块划分 478

17.3 主服务模块设计 478

17.3.1 设计原理 478

17.3.2 源代码 479

17.4 业务管理模块 480

17.4.1 业务服务流程 481

17.4.2 协议解析子模块 483

17.4.3 响应处理子模块 485

17.4.4 文件传输子模块 487

17.4.5 响应码生成子模块 490

17.4.6 日志管理子模块 493

17.5 界面模块设计 495

17.5.1 界面显示模块代码 495

17.5.2 事件处理代码 496

17.6 综合测试 498

17.6.1 文件编译 498

17.6.2 测试运行 499

附录 习题参考答案 501

参考文献 527