《新手学Linux C编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:阎映炳等编著
  • 出 版 社:北京:北京希望电子出版社
  • 出版年份:2010
  • ISBN:9787894990389
  • 页数:465 页
图书介绍:本手册分3篇共18章,Linux系统的基本操作、C语言基础、LinuxC语言难点、数据结构、相关工具集、基本应用程序开发、文件操作、进程操作、进程间通信、多线程编程、网络编程,以及图形界面编程等。为了便于读者学习,最后通过一个完整的Linux命令源代码,介绍设计实现了一个客户/服务器程序,其中涵盖了网络编程和GUI编程的相关知识。

第1篇 基础篇 2

第1章 Linux简介 2

1.1 Linux系统概述 2

1.1.1 Linux的发展简史 2

1.1.2 Linux的组成 3

1.1.3 Linux的特性 4

1.1.4 Linux的应用领域 5

1.1.5 Linux的发行版本 6

1.2 Linux图形界面操作 7

1.2.1 系统登录、注销与关闭 7

1.2.2 系统管理 8

1.2.3 文件与目录操作 9

1.3 Linux字符界面操作 10

1.3.1 系统登录与退出 10

1.3.2 文件与目录操作 11

1.3.3 备份与压缩 20

1.3.4 基本网络操作 22

1.3.5 用户管理 23

1.3.6 系统管理及其他常用命令 24

1.4 Shell脚本编程基础 28

1.4.1 Shell脚本的创建过程 28

1.4.2 Shell中的特殊字符 29

1.4.3 Shell变量 31

1.4.4 条件测试 32

1.4.5 控制结构 34

1.4.6 Shell函数 38

1.5 常见面试题 39

1.6 小结 39

1.7 习题 40

第2章 C语言基础 41

2.1 C语言概述 41

2.1.1 发展历史与特点 41

2.1.2 程序的基本结构 42

2.1.3 程序的开发流程 42

2.2 数据类型、运算符和表达式 43

2.2.1 数据类型 43

2.2.2 运算符 45

2.2.3 表达式 48

2.3 基本语句 48

2.3.1 表达式语句 49

2.3.2 选择语句 49

2.3.3 循环语句 52

2.3.4 跳转语句 55

2.3.5 复合语句和空语句 57

2.4 数组 57

2.4.1 一维数组 57

2.4.2 二维数组和多维数组 59

2.4.3 字符数组与字符串 61

2.5 预处理 61

2.5.1 宏定义 61

2.5.2 文件包含 63

2.5.3 条件编译 64

2.6 常见面试题 65

2.7 小结 66

2.8 习题 66

第3章 指针、函数及自定义数据类型 67

3.1 指针 67

3.1.1 指针的基本概念 67

3.1.2 指针与数组的互操作 71

3.1.3 指针数组 74

3.2 函数 75

3.2.1 函数的定义与声明 75

3.2.2 函数的调用与参数传递 76

3.2.3 变量的作用域 78

3.2.4 变量的存储类型 79

3.2.5 外部函数和内部函数 81

3.2.6 函数的递归 82

3.2.7 函数指针 85

3.3 结构体、共用体和枚举 86

3.3.1 结构体 86

3.3.2 共用体 91

3.3.3 枚举 93

3.4 常见面试题 94

3.5 小结 95

3.6 习题 95

第4章 数据结构 96

4.1 线性表 96

4.1.1 顺序存储 96

4.1.2 链式存储 99

4.2 栈 106

4.3 队列 109

4.4 二叉树 113

4.4.1 二叉树的基本概念 113

4.4.2 二叉树的存储结构 114

4.4.3 二叉树的遍历 115

4.5 查找 117

4.5.1 顺序查找 117

4.5.2 二分查找 119

4.5.3 插值查找 122

4.6 排序 124

4.6.1 冒泡排序 124

4.6.2 插入排序 126

4.6.3 选择排序 128

4.6.4 快速排序 130

4.6.5 归并排序 132

4.7 常见面试题 135

4.8 小结 135

4.9 习题 135

第5章 文本编辑器 136

5.1 vi编辑器的基本使用 136

5.1.1 vi的启动 136

5.1.2 vi的工作模式 138

5.1.3 文件的保存和退出 139

5.1.4 光标移动 140

5.1.5 屏幕滚动 143

5.1.6 文本输入、删除与修改 145

5.1.7 复制与粘贴 148

5.1.8 查找与替换 150

5.1.9 其他功能 152

5.2 vi编辑器之程序编辑 153

5.2.1 程序中光标的跳转 153

5.2.2 程序编辑过程中的关键字补全 155

5.2.3 源代码的缩进 156

5.3 emacs编辑器的基本使用 157

5.3.1 emacs的启动与退出 157

5.3.2 文件打开与保存 158

5.3.3 光标移动与屏幕滚动 159

5.3.4 文本编辑 160

5.3.5 查找与替换 160

5.3.6 窗口功能 161

5.3.7 帮助功能 162

5.4 常见面试题 162

5.5 小结 162

5.6 习题 162

第6章 GCC编译器 163

6.1 GCC简介 163

6.2 GCC的安装 163

6.3 GCC常用选项 166

6.3.1 基本选项 166

6.3.2 警告选项 169

6.3.3 优化选项 172

6.3.4 连接器选项 173

6.3.5 其他选项 175

6.4 常见面试题 176

6.5 小结 177

6.6 习题 177

第7章 调试工具 178

7.1 GDB简介及安装 178

7.2 GDB常用命令 179

7.2.1 GDB基本命令 179

7.2.2 断点设置与管理 183

7.2.3 数据显示与变量赋值 186

7.2.4 程序执行与函数调用 189

7.2.5 其他常用命令 191

7.3 GDB调试实例 193

7.4 其他调试工具 196

7.5 常见面试题 198

7.6 小结 198

7.7 习题 198

第8章 多文件项目管理 199

8.1 GNU Make简介 199

8.2 Makefile文件书写规则 200

8.2.1 基本规则 200

8.2.2 变量的定义与使用 202

8.2.3 隐含规则 204

8.2.4 伪目标 205

8.2.5 函数 206

8.2.6 通用Makefile文件 207

8.3 GNU Automake简介 210

8.4 常见面试题 213

8.5 小结 214

8.6 习题 214

第9章 Linux C基本应用 215

9.1 字符串操作 215

9.1.1 字符测试 215

9.1.2 字符串初始化 217

9.1.3 字符串复制 218

9.1.4 字符串比较 220

9.1.5 字符/字符串查找 221

9.1.6 字符串连接与分割 223

9.2 数据转换 225

9.2.1 字母大小写转换 225

9.2.2 字符串转换 226

9.3 内存分配与释放 228

9.3.1 内存空间的分配 228

9.3.2 内存空间的释放 228

9.3.3 更改已分配的内存空间 229

9.4 时间和日期 230

9.4.1 时间和日期的获取 230

9.4.2 时间和日期的显示 231

9.4.3 时间的计算 233

9.5 其他应用 234

9.5.1 命令行参数分析 234

9.5.2 用户和用户组操作 237

9.5.3 环境变量操作 240

9.6 常见面试题 242

9.7 小结 243

9.8 习题 243

第2篇 应用篇 246

第10章 文件系统编程 246

10.1 Linux文件系统简介 246

10.2 文件的基本操作 247

10.2.1 创建/打开文件 247

10.2.2 关闭文件 251

10.2.3 读写文件 251

10.2.4 文件的其他操作 255

10.3 文件的属性 257

10.3.1 获取文件的属性 257

10.3.2 设置文件的属性 261

10.4 目录文件的操作 263

10.4.1 创建目录文件 263

10.4.2 打开/关闭目录文件 264

10.4.3 读取目录文件 264

10.4.4 获取/更改当前工作目录 266

10.5 常见面试题 267

10.6 小结 267

10.7 习题 267

第11章 标准输入输出 268

11.1 标准输入输出的基本操作 268

11.1.1 文件的打开 268

11.1.2 文件的关闭 269

11.1.3 缓冲区的刷新 270

11.1.4 缓冲区属性的设置 270

11.2 非格式化输入输出 271

11.2.1 单个字节输入输出 271

11.2.2 字符串输入输出 274

11.2.3 数据块输入输出 276

11.3 格式化输入输出 279

11.4 常见面试题 284

11.5 小结 285

11.6 习题 285

第12章 进程操作 286

12.1 进程的概念 286

12.1.1 进程的组成 286

12.1.2 进程状态的转化 287

12.2 Linux进程 288

12.2.1 进程的状态 289

12.2.2 进程调度信息 289

12.2.3 进程的标识符 290

12.2.4 进程间通信相关信息 290

12.2.5 进程链接信息 291

12.2.6 时间和定时器信息 291

12.2.7 文件系统信息 292

12.2.8 其他信息 292

12.3 进程创建与控制 293

12.3.1 fork函数 293

12.3.2 vfork函数和exec函数 297

12.3.3 system函数 300

12.3.4 popen函数 302

12.3.5 进程终止 303

12.3.6 获取进程信息 304

12.4 守护进程 306

12.4.1 守护进程的创建方法 307

12.4.2 守护进程的输出 310

12.5 常见面试题 311

12.6 小结 312

12.7 习题 312

第13章 进程间通信 313

13.1 管道 313

13.1.1 匿名管道 314

13.1.2 命名管道 317

13.2 信号 322

13.2.1 信号的基本原理 322

13.2.2 信号的类型 323

13.2.3 信号处理函数 324

13.2.4 信号发送函数 327

13.2.5 信号集和信号集操作函数 331

13.3 消息队列 333

13.3.1 消息队列的创建 333

13.3.2 消息队列的控制 334

13.3.3 消息队列的读写 336

13.4 信号量 340

13.4.1 信号量的创建 341

13.4.2 信号量的控制 342

13.4.3 信号量的操作 342

13.5 共享内存 345

13.5.1 共享内存的创建 345

13.5.2 共享内存的读写 347

13.6 常见面试题 350

13.7 小结 350

13.8 习题 350

第14章 多线程编程 351

14.1 线程的基本概念 351

14.1.1 多线程的意义 352

14.1.2 线程与进程的比较 352

14.1.3 多线程编程标准与线程库 353

14.1.4 Linux的线程机制 353

14.2 线程的基本操作 353

14.2.1 线程的创建 354

14.2.2 线程的合并 355

14.2.3 线程的终止 356

14.2.4 线程的属性 361

14.3 线程的同步 365

14.3.1 互斥量 365

14.3.2 条件变量 367

14.3.3 信号量 370

14.4 常见面试题 372

14.5 小结 372

14.6 习题 372

第15章 网络编程 373

15.1 网络基础知识 373

15.1.1 OSI参考模型 373

15.1.2 TCP/IP协议栈 374

15.2 套接字编程基础 375

15.2.1 套接字编程原理 376

15.2.2 创建套接字 377

15.2.3 绑定套接字 378

15.2.4 监听网络端口 379

15.2.5 接收连接请求 380

15.2.6 建立连接 380

15.2.7 面向连接的数据传输 380

15.2.8 无连接的数据传输 381

15.2.9 关闭套接字 382

15.2.10 应用实例 382

15.3 服务器模型 388

15.3.1 循环服务器 388

15.3.2 并发服务器 389

15.3.3 多路复用I/O并发服务器 392

15.4 域名系统 394

15.4.1 通过域名获取主机信息 394

15.4.2 通过地址获取主机信息 395

15.4.3 获取本地主机信息 395

15.5 常见面试题 396

15.6 小结 396

15.7 习题 397

第16章 Linux GUI编程 398

16.1 GTK+/Gnome开发简介 398

16.1.1 第一个GTK+应用程序 398

16.1.2 信号连接与回调函数 400

16.2 常用GTK+构件 403

16.2.1 构件定位 403

16.2.2 按钮构件 407

16.2.3 标签构件 409

16.2.4 文本及文本输入构件 411

16.2.5 进度条构件 416

16.2.6 组合框 420

16.2.7 对话框 423

16.3 GUI生成器Glade 428

16.3.1 打开Glade 429

16.3.2 创建应用程序界面 429

16.3.3 编译连接程序 434

16.4 常见面试题 435

16.5 小结 435

16.6 习题 436

第3篇 案例篇 438

第17章 案例1:Linux命令实现 438

17.1 功能与参数介绍 438

17.2 主函数代码分析 439

17.3 其他函数代码分析 447

17.4 小结 451

第18章 案例2:客户端/服务器端程序 452

18.1 服务器端程序设计 452

18.2 客户端程序设计 456

18.2.1 字符界面客户端程序 456

18.2.2 图形界面客户端程序 459

18.3 小结 465