《Linux C编程从基础到实践》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:程国钢,张玉兰编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302397250
  • 页数:606 页
图书介绍:本书讲解了Linux操作系统下的C语言程序设计,通过大量的程序实例,及综合开发案例的演示,帮助读者快速掌握Linux下C语言编程的方法和技巧。 本书内容包括Linux系统简介、Shell编程、Linux C开发环境、Linux下常用C库函数、进程管理、线程管理、基于文件描述法的I/O操作、基于流的I/O操作、管道、套接字编程、网络编程、GTK+图形界面开发等等,并结合两个具体的项目案例,详细介绍了Linux平台下C程序开发的方法和技巧。

第1章 Linux使用基础 1

1.1 Linux发展大事记 1

1.2 Linux的特点 4

1.3 Linux的几个相关术语 5

1.3.1 GNU 5

1.3.2 GPL 5

1.3.3 POSIX 6

1.3.4 ISO C 6

1.4 Linux的体系结构 6

1.4.1 Linux的内核 6

1.4.2 Linux的命令解释层 7

1.4.3 Linux的文件系统 7

1.4.4 Linux的应用软件 8

1.5 Linux的内核版本和发行版本 8

1.5.1 Linux的内核版本 9

1.5.2 Linux的发行版本 10

1.6 Linux的包管理 14

1.7 Linux的人机交互 16

1.7.1 图形界面 16

1.7.2 shell 18

1.8 shell的使用 22

1.8.1 shell命令的标准格式 22

1.8.2 shell的通配符 23

1.8.3 shell中的引号 24

1.8.4 shell中的注释符 26

1.9 Linux的常用命令 26

1.9.1 目录操作命令 26

1.9.2 文件操作命令 28

1.9.3 其他命令 35

1.10 本章习题 41

第2章 在Linux下进行C语言开发 42

2.1 C语言的特点和开发流程 42

2.2 Linux下的C语言开发工具 43

2.3 Linux C语言的代码编辑工具 44

2.3.1 vim 44

2.3.2 Emacs 52

2.3.3 gedit 52

2.3.4 在Linux中编辑C语言代码文件的应用实例 53

2.4 Linux C语言的编译器gcc 55

2.4.1 gcc的安装和配置 55

2.4.2 gcc对C语言的处理过程 56

2.4.3 gcc的基础使用方法 58

2.4.4 gcc的应用实例 59

2.5 Linux C语言的调试工具gdb 60

2.5.1 gdb的基础使用 61

2.5.2 gdb运行模式的选择 63

2.5.3 gdb应用实例 63

2.6 Linux C语言的项目管理工具make 64

2.6.1 make项目管理器的基础 64

2.6.2 make项目管理器的使用 69

2.6.3 make项目管理器的应用实例 70

2.7 Linux中的C语言应用代码 73

2.7.1 C语言代码的运行机制 73

2.7.2 C语言代码的程序存储空间 75

2.7.3 C语言代码的main函数和参数 76

2.7.4 C语言代码的出错处理 78

2.7.5 C语言代码的标准输入和输出函数 83

2.7.6 C语言代码的时间处理 85

2.7.7 C语言代码的分配机制 89

2.7.8 C语言代码的系统调用和库函数 90

2.8 本章习题 91

第3章 Linux文件的基础操作 92

3.1 Linux的文件 92

3.1.1 Linux的文件类型 93

3.1.2 Linux的文件结构和文件描述符 95

3.2 Linux的文件基础操作 96

3.2.1 打开和关闭文件 96

3.2.2 创建文件 101

3.2.3 将数据写入文件 103

3.2.4 在文件中进行定位操作 113

3.2.5 从文件中读出数据 119

3.3 文件基础操作的综合应用——定时创建文件并且写入数据 122

3.3.1 综合应用的需求说明和分析 123

3.3.2 秒定时的实现 123

3.3.3 将当前时间信息写入文件 126

3.3.4 使用时间信息作为文件名 129

3.4 本章习题 134

第4章 Linux的目录文件操作 135

4.1 目录文件的基础操作 135

4.1.1 目录文件的创建和删除 135

4.1.2 目录文件的打开、关闭和读取 140

4.1.3 当前工作目录路径 147

4.2 目录文件的综合应用——定时创建目录和文件 150

4.2.1 综合应用的需求分析 150

4.2.2 使用时间信息生成目录和文件 150

4.2.3 定时创建目录和文件 153

4.3 本章习题 156

第5章 Linux的文件系统和文件属性 157

5.1 Linux的文件系统和文件属性基础 157

5.1.1 Linux的文件系统 158

5.1.2 Linux的文件系统结构 160

5.1.3 Linux的文件和文件属性 164

5.2 Linux文件属性的操作方法 166

5.2.1 判断文件类型 166

5.2.2 文件的时间信息 170

5.2.3 文件的权限 174

5.2.4 修改文件的名称 183

5.2.5 删除文件 185

5.3 Linux的链接文件 187

5.3.1 链接文件基础 187

5.3.2 硬链接操作函数 188

5.3.3 符号链接操作函数 188

5.4 文件的其他操作 190

5.4.1 dup和dup2函数 190

5.4.2 fcntl函数 192

5.4.3 truncate和ftruncate函数 195

5.5 本章习题 195

第6章 Linux的流 196

6.1 Linux的流基础 196

6.1.1 流和文件的关系 196

6.1.2 流的结构和操作流程 197

6.1.3 标准流介绍 199

6.2 流的基础操作 199

6.2.1 打开和关闭流 199

6.2.2 读写流 205

6.2.3 流的出错处理 217

6.2.4 流的定位 220

6.2.5 流的缓冲管理 224

6.2.6 流的冲洗 231

6.3 流的格式化输入和输出 231

6.3.1 流的格式化输出 232

6.3.2 流的格式化输入 232

6.3.3 流的格式化参数 233

6.3.4 流的格式化输入输出操作实例 236

6.4 本章习题 241

第7章 Linux的进程 243

7.1 操作系统和进程 243

7.1.1 进程的特点 243

7.1.2 进程和可执行文件(程序)的区别 244

7.2 Linux的进程基础 244

7.2.1 Linux进程的基础属性 244

7.2.2 Linux的进程标识方法 247

7.2.3 Linux的进程调度 251

7.2.4 Linux下的进程执行流程 252

7.3 Linux的进程操作 252

7.3.1 使用fork函数来创建进程 252

7.3.2 执行进程 264

7.3.3 使用vfork函数创建并且执行进程 271

7.3.4 退出进程 274

7.3.5 销毁进程 279

7.3.6 Linux的进程操作总结 281

7.4 进程综合应用——使用多个进程创建文件 283

7.5 Linux的进程组和会话 286

7.6 Linux进程的其他操作 290

7.6.1 更改进程用户 290

7.6.2 在进程中调用其他应用程序 292

7.6.3 统计进程状态 295

7.6.4 进程的执行时间 297

7.7 本章习题 301

第8章 Linux的信号 302

8.1 Linux的信号机制 302

8.1.1 信号的工作方式 302

8.1.2 信号的分类和说明 305

8.2 Linux信号的使用方法 308

8.2.1 注册信号 309

8.2.2 发送信号 314

8.2.3 定时信号 325

8.2.4 退出信号 326

8.3 Linux的信号集 327

8.4 信号的高级操作 328

8.4.1 信号的阻塞和挂起 328

8.4.2 信号的精确定时 329

8.4.3 可重入函数 331

8.5 本章习题 332

第9章 Linux的进程同步机制——管道和IPC 333

9.1 Linux的管道 333

9.1.1 管道的基本概念 333

9.1.2 管道的实现方法 334

9.1.3 管道的读写操作规则 335

9.1.4 管道的特点 336

9.2 Linux的管道操作 336

9.2.1 管道的创建 336

9.2.2 进程的管道通信 338

9.2.3 管道的高级应用 347

9.3 Linux的命名管道 350

9.3.1 命名管道的基本概念 350

9.3.2 命名管道的工作方式 350

9.4 Linux的命名管道操作 354

9.4.1 创建命名管道 354

9.4.2 读写命名管道 355

9.4.3 进程使用命名管道通信 356

9.5 Linux的System V IPC机制 359

9.5.1 System V IPC的标识符和关键字 360

9.5.2 System V IPC的结构和权限 361

9.5.3 System V IPC的特点 364

9.6 Linux的消息队列 365

9.6.1 消息队列基础 365

9.6.2 消息队列的操作 367

9.7 Linux的信号量 377

9.7.1 信号量的基础 377

9.7.2 信号量的操作 379

9.8 Linux的共享内存 383

9.8.1 共享内存的基础 383

9.8.2 共享内存的操作 384

9.8.3 共享内存的应用实例 387

9.9 本章习题 390

第10章 Linux的线程 391

10.1 Linux的线程基础 391

10.1.1 线程的特点 391

10.1.2 控制线程和线程的标识符 392

10.1.3 用户态和核心态线程 393

10.1.4 使用gcc编译线程的相关代码 393

10.2 Linux的线程操作 393

10.2.1 创建线程 394

10.2.2 阻塞和退出线程 397

10.2.3 取消和清理线程 400

10.2.4 分离线程 401

10.3 线程的属性 402

10.3.1 线程属性对象的初始化和销毁函数 403

10.3.2 线程堆栈大小相关函数 403

10.3.3 线程堆栈地址函数 404

10.3.4 线程的分离状态函数 404

10.3.5 线程的作用域函数 404

10.3.6 线程的继承调度函数 405

10.3.7 线程的调度策略函数 405

10.3.8 线程的调度参数函数 405

10.3.9 使用线程的属性 406

10.4 线程的私有数据 407

10.4.1 创建键函数 408

10.4.2 取消键关联函数 408

10.4.3 解决键冲突函数 408

10.4.4 键关联函数 409

10.4.5 线程私有数据地址获取函数 409

10.4.6 使用线程的私有数据 409

10.5 线程的同步 411

10.5.1 使用互斥锁解决线程同步 412

10.5.2 使用条件变量解决线程同步 415

10.6 本章习题 420

第11章 Linux的网络编程 422

11.1 Linux的网络通信模型 422

11.1.1 OSI网络模型 422

11.1.2 TCP/IP协议和其网络模型 423

11.1.3 客户端/服务器结构 426

11.1.4 Linux的端口和套接字 427

11.1.5 Linux套接字的结构定义 429

11.2 Linux的网络基础操作函数 430

11.2.1 字节顺序转换函数族 431

11.2.2 字节操作函数族 432

11.2.3 IP地址转换函数族 433

11.2.4 域名转换函数族 436

11.3 Linux的网络套接字操作函数 439

11.4 Linux的TCP编程 450

11.4.1 TCP基础 451

11.4.2 TCP的工作流程和应用 452

11.5 Linux的UDP编程 457

11.5.1 UDP的基础知识 457

11.5.2 UDP的工作流程和应用 457

11.6 应用实例——获取网络时间 461

11.7 本章习题 468

第12章 在Linux中进行基础图形编程 469

12.1 Linux图形编程基础 469

12.2 GTK+的基本使用方法 471

12.2.1 GTK+的常见数据类型 471

12.2.2 GTK+的常见函数前缀 472

12.2.3 一个最简单的GTK+窗口 472

12.2.4 GTK+的常见基础函数 473

12.2.5 GTK+的构件和容器 477

12.2.6 GTK+的回调函数 478

12.3 在GTK+中使用简单构件 480

12.3.1 按钮 481

12.3.2 触发按钮 482

12.3.3 复选框 484

12.3.4 单选框 485

12.3.5 组合盒 487

12.3.6 组合表 489

12.3.7 标签 491

12.3.8 输入框 493

12.3.9 箭头 496

12.3.10 标尺 498

12.4 在GTK+中使用组合构件 499

12.4.1 对话框 499

12.4.2 组合框 501

12.4.3 微调构件 503

12.4.4 日历构件 505

12.4.5 文件选择构件 508

12.4.6 按钮盒 511

12.4.7 框架 513

12.4.8 文本框 514

12.5 设计GTK+的菜单 517

12.5.1 建立菜单 518

12.5.2 菜单的信号处理 520

12.5.3 工具栏 521

12.6 使用Glade界面设计师 523

12.7 本章习题 524

第13章 Linux的C语言编程实战 525

13.1 实时风力数据采集仪PC机端软件设计 525

13.1.1 实时风力数据采集仪PC机端软件的需求分析 525

13.1.2 Linux下的串口编程基础 526

13.1.3 实时风力数据采集仪PC机端软件的代码设计 537

13.1.4 实时风力数据采集仪PC机端软件的记录数据 540

13.2 俄罗斯方块游戏设计 540

13.2.1 俄罗斯方块的需求分析 541

13.2.2 GTK+的图形设计进阶 541

13.2.3 俄罗斯方块的代码设计 548

13.2.4 俄罗斯方块游戏的运行 568

附录 习题答案 570