《Linux C从入门到精通》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:明日科技编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302284857
  • 页数:463 页
图书介绍:本书从初学者的角度系统的介绍了在Linux平台下用c语言进行程序开发的过程,通过列举大量的程序实现代码,使读者可以快速掌握在Linux平台下进行C语言程序开发的方法和技巧,并具备一定的进行开发大型项目的能力。读者通过对每一章的学习然后,使读者从基础开始,慢慢走向深入的Linux环境下C语言的编程知识。

第1篇 基础知识 3

第1章 Linux系统概述 3

1.1 Linux的起源与发展 4

1.1.1 GNU项目的前前后后 4

1.1.2 Linux的诞生 4

1.1.3 Linux的现状 5

1.2 Linux的内核与版本 5

1.2.1 Linux内核的介绍 5

1.2.2 Linux对硬件平台的支持 6

1.2.3 常见Linux的发行版本 6

1.3 Linux系统的安装 6

1.3.1 Linux系统安装的硬件要求 7

1.3.2 图形化安装Linux 7

1.3.3 第一次启动Linux系统 12

1.4 小结 13

第2章 C语言基础 15

2.1 C语言概述 16

2.2 数据类型 16

2.2.1 基本类型 17

2.2.2 构造类型 19

2.2.3 指针类型 20

2.2.4 空类型 22

2.3 运算符和表达式 22

2.3.1 运算符 22

2.3.2 表达式 24

2.4 函数 24

2.5 程序语句 26

2.5.1 控制语句 27

2.5.2 函数调用语句 28

2.5.3 表达式语句 28

2.5.4 空语句 28

2.5.5 复合语句 28

2.6 预处理命令 29

2.6.1 宏定义 29

2.6.2 文件包含 30

2.7 小结 30

2.8 实践与练习 30

第3章 内存管理 31

3.1 内存分类 32

3.1.1 动态内存 32

3.1.2 静态内存 32

3.1.3 动态内存与静态内存的区别 33

3.2 内存管理的基本操作 33

3.2.1 分配内存 33

3.2.2 释放内存 36

3.3 链表 36

3.4 小结 38

3.5 实践与练习 38

第4章 基本编辑器VIM和Emacs 39

4.1 初识VIM 40

4.1.1 VIM的进入与退出 40

4.1.2 VIM基本模式 40

4.2 VIM的基本操作 41

4.2.1 VIM的命令行模式操作 41

4.2.2 VIM的编辑模式操作 43

4.2.3 VIM的底行模式操作 43

4.3 初识Emacs 44

4.4 Emacs的基本操作 44

4.4.1 启动Emacs 44

4.4.2 基本操作 45

4.5 小结 46

第5章 GCC编译器 47

5.1 初识GCC编译器 48

5.1.1 第一次编译 48

5.1.2 GCC选项概述 48

5.1.3 警告 49

5.1.4 GCC调试 50

5.1.5 代码优化 52

5.2 GCC编译的基本流程 54

5.2.1 C预处理 54

5.2.2 编译 54

5.2.3 汇编 54

5.2.4 链接 54

5.3 其他编译工具简介 55

5.3.1 C++编译器G++ 55

5.3.2 EGCS 55

5.3.3 F2C和P2C 55

5.4 小结 55

第6章 GDB调试工具 57

6.1 初识GDB调试器 58

6.1.1 GDB调试器概述 58

6.1.2 用GDB调试简单程序 58

6.2 GDB调试器的基本功能与常用命令 60

6.2.1 启动调试程序功能及其命令 61

6.2.2 使用断点功能及其命令 62

6.2.3 检查数据的功能及其命令 64

6.2.4 使用观察窗口功能及其命令 67

6.2.5 检查栈信息功能及其命令 67

6.2.6 检查源代码功能及其命令 68

6.2.7 改变程序的运行功能及其命令 70

6.3 多线程程序调试 71

6.4 Linux平台上的其他调试工具 71

6.5 小结 72

第2篇 核心技术 75

第7章 进程控制 75

7.1 进程概述 76

7.1.1 进程的定义 76

7.1.2 进程的相关信息 77

7.2 进程的基本操作 78

7.2.1 进程创建 78

7.2.2 进程等待 84

7.2.3 进程结束 88

7.3 多个进程间的关系 89

7.3.1 进程组 89

7.3.2 时间片的分配 90

7.4 线程 92

7.4.1 线程概述 92

7.4.2 线程的属性 92

7.5 进程的特殊操作 94

7.5.1 获取进程标识 94

7.5.2 设置进程标识 98

7.6 小结 99

7.7 实践与练习 99

第8章 进程间通信 101

8.1 进程间通信概述 102

8.1.1 进程间通信的工作原理 102

8.1.2 进程间通信的主要分类 102

8.2 管道与命名管道 102

8.2.1 管道基本定义 103

8.2.2 管道创建和管道关闭 103

8.2.3 pipe()函数实现管道通信 103

8.2.4 命名管道基本定义 106

8.2.5 在Shell中创建命名管道 106

8.2.6 mkfifo()函数创建命名管道 107

8.3 共享内存 109

8.3.1 SYSV子系统的基本知识 109

8.3.2 共享内存相关操作 110

8.3.3 共享内存实现进程间通信 113

8.4 信号量 115

8.4.1 信号量的工作原理 115

8.4.2 信号量的相关操作 116

8.4.3 信号量实现进程间通信 118

8.5 消息队列 120

8.5.1 消息队列的相关操作 121

8.5.2 消息队列实现进程间通信 123

8.6 小结 125

8.7 实践与练习 125

第9章 文件操作 127

9.1 文件初探 128

9.1.1 文件与文件系统的概念 128

9.1.2 文件的属性 128

9.1.3 文件的相关信息 129

9.2 文件的相关操作 130

9.2.1 修改文件属性 131

9.2.2 复制文件描述符 134

9.2.3 获取文件信息 135

9.2.4 文件的其他操作 136

9.3 特殊文件的操作 137

9.3.1 目录文件的操作 137

9.3.2 链接文件的操作 141

9.3.3 设备文件 143

9.4 小结 144

9.5 实践与练习 144

第10章 文件的输入/输出操作 145

10.1 文件I/O操作概述 146

10.1.1 文件描述符简介 146

10.1.2 数据流概述 146

10.2 基于文件描述符的I/O操作 147

10.2.1 文件的打开与关闭 147

10.2.2 文件的读写操作 149

10.2.3 文件的定位 150

10.3 基于数据流的I/O操作 152

10.3.1 文件的打开与关闭 153

10.3.2 字符输入/输出 154

10.3.3 字符串输入/输出 156

10.3.4 数据块输入/输出 157

10.3.5 格式化输入/输出 158

10.3.6 操作读写位置的函数 159

10.3.7 C标准库的I/O缓冲区 162

10.4 小结 163

10.5 实践与练习 164

第11章 信号及信号处理 165

11.1 信号概述 166

11.1.1 在终端中查看常见的信号 166

11.1.2 信号处理 166

11.2 产生信号 167

11.2.1 kill()函数 167

11.2.2 raise()函数 168

11.2.3 alarm()函数 168

11.3 捕捉信号 168

11.3.1 signal()函数 169

11.3.2 sigaction()函数 171

11.4 信号的阻塞 172

11.4.1 sigprocmask()函数 173

11.4.2 sigsuspend()函数 173

11.4.3 sigpending()函数 173

11.5 信号处理的安全问题 175

11.6 小结 176

11.7 实践与练习 176

第12章 网络编程 177

12.1 网络编程的基本原理 178

12.1.1 计算机网络 178

12.1.2 TCp/IP协议 179

12.1.3 IP地址简介 179

12.1.4 套接字编程原理 182

12.2 TCP套接字编程 187

12.3 UDP套接字编程 190

12.3.1 数据传输系统调用 191

12.3.2 基于UDP协议的C/S机制的网络通信的工作原理 192

12.3.3 基于UDP的简单网络通信实例 193

12.4 原始套接字编程 195

12.4.1 原始套接字定义 196

12.4.2 原始套接字系统调用 196

12.4.3 原始套接字的发送与接收 197

12.4.4 报文处理 197

12.5 小结 200

12.6 实践与练习 200

第13章 make编译基础 201

13.1 通过实例认识make 202

13.1.1 Makefile的导入 202

13.1.2 make是如何工作的 206

13.1.3 Makefile中使用变量 207

13.1.4 让make自动推导 208

13.1.5 清空目标文件的规则 209

13.2 make概述 209

13.2.1 Makefile中有什么 209

13.2.2 Makefile的文件名 210

13.2.3 包含其他Makefile文件 210

13.2.4 变量MAKEFILES 212

13.2.5 变量MAKEFILE LIST 213

13.2.6 其他特殊变量 213

13.2.7 Makefile文件的重建 213

13.2.8 重载另外一个Makefile 215

13.2.9 make如何解析Makefile文件 215

13.2.10 总结 216

13.3 Makefile基本规则 217

13.3.1 规则举例 217

13.3.2 规则语法 218

13.3.3 依赖的类型 219

13.3.4 文件名使用通配符 219

13.3.5 目录搜寻 221

13.3.6 Makefile伪目标 226

13.3.7 强制目标(没有命令或依赖的规则) 229

13.3.8 空目标文件 229

13.3.9 Makefile的特殊目标 230

13.3.10 多目标 231

13.3.11 多规则目标 232

13.3.12 静态模式 233

13.3.13 双冒号规则 235

13.3.14 自动产生依赖 236

13.3.15 书写命令 238

13.4 变量的基本操作 242

13.4.1 变量的基础 243

13.4.2 变量中的变量 243

13.4.3 变量高级用法 245

13.4.4 追加变量值 247

13.4.5 override指示符 248

13.4.6 多行变量 248

13.4.7 环境变量 249

13.4.8 目标变量 249

13.4.9 模式变量 250

13.5 条件判断 250

13.5.1 示例 250

13.5.2 语法 251

13.6 基本函数的使用 253

13.6.1 函数的调用语法 253

13.6.2 字符串处理函数 254

13.6.3 文件名操作函数 257

13.6.4 foreach()函数 259

13.6.5 if()函数 260

13.6.6 call()函数 260

13.6.7 origin()函数 261

13.6.8 shell()函数 262

13.6.9 控制make的函数 262

13.7 make的运行 263

13.7.1 make的退出码 263

13.7.2 指定Makefile 263

13.7.3 指定目标 263

13.7.4 检查规则 265

13.7.5 make的参数 265

13.8 隐含规则 267

13.8.1 使用隐含规则 268

13.8.2 隐含规则一览 269

13.8.3 隐含规则使用的变量 270

13.8.4 隐含规则链 271

13.8.5 模式规则 272

13.8.6 后缀规则 275

13.8.7 隐含规则搜索算法 276

13.9 make工具与函数库 277

13.9.1 函数库文件的成员 277

13.9.2 函数库成员的隐含规则 278

13.9.3 函数库文件的后缀规则 278

13.9.4 注意事项 278

13.10 小结 278

13.11 实践与练习 279

第14章 Linux系统下的C语言与数据库 281

14.1 MySQL数据库简介 282

14.2 安装和连接MySQL数据库 282

14.2.1 安装MySQL数据库 282

14.2.2 启动和关闭MySQL 283

14.3 连接操作MySQL 285

14.3.1 MySQL常用数据库操作函数 285

14.3.2 连接MySQL数据 287

14.3.3 查询表记录 288

14.3.4 插入表记录 289

14.3.5 修改表记录 290

14.3.6 删除表记录 290

14.4 Oracle数据库简介 291

14.5 Oracle数据库的安装 292

14.5.1 软硬件要求 292

14.5.2 安装Oracle 11g数据库 295

14.5.3 创建监听和数据库 296

14.6 连接Oracle数据库 300

14.7 小结 302

14.8 实践与练习 302

第15章 集成开发环境 303

15.1 Eclipse与CDT简介 304

15.2 安装和配置Eclipse 305

15.2.1 安装Eclipse 305

15.2.2 配置Eclipse的CDT 307

15.3 使用Eclipse开发C代码 308

15.3.1 编写运行Hello World 308

15.3.2 CDT的相关功能 310

15.3.3 调试C/C++的项目 310

15.4 小结 311

第3篇 高级应用 315

第16章 界面开发基础 315

16.1 Linux常用桌面环境 316

16.1.1 面板介绍 316

16.1.2 桌面图标介绍 317

16.1.3 桌面背景 318

16.2 glib库介绍 319

16.2.1 类型定义 319

16.2.2 glib的宏 319

16.2.3 内存管理 320

16.2.4 字符串处理 321

16.2.5 数据结构 323

16.3 GObject对象介绍 325

16.4 图形引擎Cairo介绍 326

16.5 多媒体库介绍 328

16.5.1 元件和插件 328

16.5.2 衬垫 329

16.5.3 数据、缓冲区和事件 329

16.5.4 缓冲区的分配 330

16.5.5 MIME类型和属性 330

16.6 小结 330

16.7 实践与练习 330

第17章 界面布局 331

17.1 窗体 332

17.1.1 初始化 332

17.1.2 建立窗口 332

17.1.3 结束应用程序 334

17.1.4 回调函数 334

17.1.5 其他窗体函数 336

17.2 组装盒构件 337

17.2.1 组装盒的原理 337

17.2.2 盒的细节 338

17.2.3 组装盒程序 339

17.2.4 用表组装 343

17.2.5 表组装程序 345

17.3 容器 347

17.3.1 事件盒 347

17.3.2 对齐构件 347

17.3.3 固定容器 348

17.3.4 布局容器 349

17.3.5 框架 350

17.3.6 分栏窗口构件 352

17.3.7 视角 353

17.3.8 滚动窗口 353

17.3.9 按钮盒 355

17.3.10 工具栏 357

17.3.11 笔记本 362

17.4 小结 366

17.5 实践与练习 366

第18章 界面构件开发 367

18.1 基本界面构件 368

18.1.1 按钮构件 368

18.1.2 调整对象 372

18.1.3 范围构件 374

18.1.4 标签 381

18.1.5 箭头 384

18.1.6 工具提示对象 386

18.1.7 进度条 386

18.1.8 对话框 390

18.1.9 标尺 391

18.2 杂项构件 394

18.2.1 状态栏 394

18.2.2 文本输入构件 396

18.2.3 微调按钮 398

18.2.4 组合框 404

18.2.5 日历 406

18.2.6 颜色选择 414

18.2.7 文件选择 415

18.3 RC文件 416

18.4 小结 417

18.5 实践与练习 417

第19章 Glade设计程序界面 419

19.1 Glade简介 420

19.2 构造图形界面 421

19.2.1 添加窗体 421

19.2.2 添加容器 427

19.2.3 添加构件 433

19.2.4 设置构件属性 436

19.2.5 添加事件和回调 437

19.3 C语言代码联编 438

19.3.1 GtkBuilder代码连接基础 439

19.3.2 GtkBuilder代码连接实例 441

19.4 小结 443

19.5 实践与练习 443

第4篇 项目实战 447

第20章 MP3音乐播放器 447

20.1 GStreamer简介 448

20.2 界面设计 449

20.3 代码设计 451

20.3.1 建立工程文件 451

20.3.2 主程序设计 452

20.3.3 生成playbin对象 453

20.3.4 打开文件 457

20.3.5 播放MP3 458

20.3.6 暂停播放 459

20.3.7 停止播放 459

20.3.8 界面更新 460

20.3.9 播放控制 461

20.4 小结 463