《轻松学Linux编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:阎映炳等编著
  • 出 版 社:北京:化学工业出版社
  • 出版年份:2012
  • ISBN:9787122149992
  • 页数:476 页
图书介绍:本书分为四篇21章。第一篇对系统环境进行了介绍,包括Linux系统、Shell环境;第二篇介绍C语言及编程环境,包括vi编辑器、gcc编译器、程序调试等内容;第三篇输入输出及进程管理,包括文件操作、标准输入输出库等内容;第四篇对进程间通信(IPC)及网络编程的相关知识进行了介绍。

第一篇 系统环境 2

第1章Linux系统概述 2

1.1计算机操作系统简介 2

1.1.1操作系统的概念 2

1.1.2操作系统的基本功能 2

1.1.3主要操作系统简介 3

1.2 Linux操作系统介绍 4

1.2.1 Linux的来源 4

1.2.2什么是Linux 5

1.2.3 Linux的特性及优点 7

1.2.4为什么要选择Linux 8

1.2.5内核的组成 8

1.3主流Linux操作系统及发行版本 9

1.3.1 Linux内核的版本 10

1.3.2 Linux的发行版本 10

1.4小结 10

1.5习题 10

1.6上机实训 11

第2章shell环境 12

2.1shell介绍 12

2.1.1 shell的种类 12

2.1.2如何进入shell 13

2.1.3如何使用shell 15

2.2 shell编程基础 16

2.2.1创建和运行shell脚本程序 16

2.2.2 shell环境变量 16

2.2.3常用的shell命令 18

2.2.4管道与重定向的使用 20

2.2.5 shell变量的使用 21

2.2.6 shell运算符的应用 22

2.2.7在shell脚本中进行条件控制 24

2.2.8在shell脚本中使用for循环 25

2.2.9在shell脚本中使用while循环 27

2.2.10在shell脚本中使用until循环 28

2.2.11在shell脚本中使用函数 28

2.3综合实例 29

2.3.1实例需求 29

2.3.2系统设计 29

2.3.3程序代码 30

2.4小结 34

2.5习题 34

2.6上机实训 35

第二篇C语言及编程环境 38

第3章C语言简介 38

3.1 C语言概述 38

3.1.1 C语言的发展简史 38

3.1.2 C语言的特点 39

3.2 C语言的组成元素 39

3.2.1字符集 39

3.2.2标识符 40

3.2.3关键字 40

3.2.4常量的类型 41

3.2.5变量的类型 41

3.2.6变量的存储类型 42

3.2.7变量的作用域 44

3.2.8运算符 44

3.2.9注释方法 46

3.3语句与控制结构 46

3.3.1表达式语句 46

3.3.2复合语句 46

3.3.3函数调用语句 46

3.3.4控制语句 47

3.4函数与程序结构 51

3.4.1库函数 51

3.4.2用户自定义函数 51

3.5数组 52

3.5.1一维数组的定义和使用 52

3.5.2多维数组的定义和使用 53

3.6结构 55

3.6.1结构的定义 55

3.6.2结构成员的引用 56

3.7指针 56

3.7.1指针的概念 57

3.7.2指针的定义和使用 57

3.7.3指针变量的运算 57

3.8综合实例 58

3.8.1冒泡排序算法原理 58

3.8.2冒泡排序算法实现 59

3.9小结 61

3.10习题 62

3.11上机实训 62

第4章vi编辑器 65

4.1 vi编辑器概述 65

4.1.1 vi的启动 65

4.1.2 vi的操作方式 65

4.1.3 vi编辑器的功能键 67

4.1.4退出vi编辑器 68

4.2 vi编辑器的命令 68

4.2.1光标移动命令 68

4.2.2滚动屏幕命令 69

4.2.3文本编辑命令 69

4.2.4文本删除命令 69

4.2.5文本修改命令 70

4.2.6文本移动命令 70

4.2.7搜索命令 71

4.2.8 ex转义命令 71

4.3 vi编辑器的选项 72

4.3.1选项的含义 72

4.3.2选项的设置方式 73

4.4小结 74

4.5习题 74

4.6上机实训 75

第5章gcc编译器 76

5.1编译过程简述 76

5.1.1预编译过程 76

5.1.2编译的过程 78

5.1.3优化及汇编的过程 79

5.2链接过程简述 79

5.2.1链接的过程 80

5.2.2静态链接与动态链接 80

5.3 gcc编译器简述 81

5.3.1程序的编译与链接 81

5.3.2 gcc编译器的工作过程 81

5.4 gcc编译器语法 82

5.4.1常用语法 82

5.4.2用gcc编译器生成可执行文件 83

5.4.3用gcc编译器生成动态链接库 83

5.4.4如何使用动态链接 85

5.4.5 gcc编译器常见错误排除 85

5.5小结 86

5.6习题 86

5.7上机实训 86

第6章make的使用 88

6.1 makefiile简介 88

6.2 makefiile的书写规则 89

6.2.1基本语法规则 89

6.2.2定义变量 89

6.2.3环境变量 90

6.2.4通配符的使用 90

6.2.5使用条件判断 91

6.2.6在makefile中使用函数 92

6.2.7使用make与直接使用gcc脚本 的区别 93

6.3 make工具 93

6.3.1运行make命令 93

6.3.2 make命令的工作过程 94

6.3.3在makefiile中使用伪目标 94

6.3.4 make命令的返回值 95

6.4综合实例 95

6.4.1 makefiile应用的环境 95

6.4.2 makefiile的实现及解释 95

6.5小结 96

6.6习题 96

6.7上机实训 97

第7章 程序调试 98

7.1错误处理 98

7.1.1使用标准错误输出 98

7.1.2使用ermo全局变量 99

7.1.3使用错误信号处理 100

7.1.4使用assert断言 101

7.1.5内存泄露的检查 102

7.1.6其他可能的内存错误 104

7.2 gdb介绍 105

7.2.1利用gdb调试的前提 105

7.2.2启动gdb的方法 105

7.2.3 gdb的基本功能 105

7.3使用gdb进行调试实例 108

7.4小结 109

7.5习题 109

7.6上机实训 109

第8章 创建与使用库 111

8.1函数库介绍 111

8.1.1系统函数库的使用 111

8.1.2用户自定义函数库的创建和使用 112

8.2库函数与系统调用 114

8.2.1系统调用介绍 115

8.2.2库函数介绍 116

8.3动态库的创建与使用 117

8.4综合实例 120

8.5小结 121

8.6习题 122

8.7上机实训 122

第三篇 输入输出及进程管理 126

第9章 文件操作 126

9.1 Linux文件系统简述 126

9.1.1逻辑磁盘分区管理 126

9.1.2文件系统的建立与挂载 127

9.1.3虚拟文件系统 131

9.1.4 ext2文件系统 131

9.1.5文件类型 133

9.1.6文件权限管理 134

9.2文件基本操作 139

9.2.1文件编程的基本概念 140

9.2.2文件的创建与打开 141

9.2.3文件的读写 146

9.2.4文件的关闭与删除 148

9.2.5文件的随机存取 151

9.3文件安全编程 153

9.3.1文件的属主和用户组编程 153

9.3.2设置文件权限(UGO模式) 155

9.3.3设置文件权限(ACL模式) 158

9.4文件属性编程 162

9.5目录编程 166

9.6综合实例 170

9.6.1ELF文件格式 171

9.6.2程序实现 171

9.7小结 175

9.8习题 176

9.9上机实训 176

第10章 标准输入输出库 178

10.1标准IO的基本概念 178

10.1.1流 178

10.1.2缓存 179

10.1.3标准输入、标准输出和标准 错误输出 181

10.2使用标准I/O进行文件操作 183

10.2.1打开关闭流文件 183

10.2.2单字符方式读写 184

10.2.3行方式读写 185

10.2.4二进制方式读写 187

10.2.5格式化输入输出 189

10.2.6在流文件中定位 192

10.3综合实例 193

10.4小结 197

10.5习题 197

10.6上机实训 197

第11章 界面程序设计——Qt 204

11.1 Qt简述 204

11.1.1 Qt的组成 204

11.1.2 Qt的优点 204

11.2 Qt开发包的安装 205

11.3 Qt集成开发环境介绍 206

11.3.1启动设计器 206

11.3.2设计器界面元素介绍 206

11.4 Qt程序开发 207

11.4.1建立新项目 208

11.4.2设计窗口 208

11.4.3添加事件处理 209

11.4.4添加主程序 210

11.5 Qt程序的生成 212

11.6小结 213

11.7习题 213

11.8上机实训 213

第12章 界面程序设计——GTK+ 219

12.1 GNOME与KDE 219

12.1.1 Linux图形界面原理 219

12.1.2 X协议 220

12.1.3 GNOME与KDE的启动 220

12.1.4 GNOME与KDE的区别 221

12.2使用GTK+进行开发 221

12.2.1GTK+的安装 221

12.2.2 GTK+程序的初始化与退出 222

12.2.3 GTK+的事件处理 222

12.2.4使用GTK+实现HelloWorld 223

12.2.5编译GTK+程序 225

12.2.6在GTK+中使用控件 225

12.3综合实例 226

12.3.1实例需求 227

12.3.2实例代码及解释 227

12.4小结 228

12.5习题 229

12.6上机实训 229

第13章 进程 233

13.1进程的基本概念 233

13.1.1进程的属性 233

13.1.2进程的内存映像 236

13.1.3进程组 236

13.1.4进程的会话 238

13.1.5进程的控制终端 240

13.1.6进程的状态 241

13.1.7进程的优先级 242

13.2进程的运行环境 245

13.2.1进程的入口函数 245

13.2.2进程的环境变量 250

13.2.3进程的内存分配 252

13.3进程的创建 254

13.3.1调用fork创建进程 254

13.3.2调用exec系列函数执行程序 256

13.3.3调用system创建进程 259

13.4进程的终止 260

13.4.1调用exit退出进程 260

13.4.2调用wait等待进程退出 260

13.5小结 263

13.6习题 263

13.7上机实训 263

第14章 信号 266

14.1信号的基本概念 266

14.1.1信号的定义 266

14.1.2信号的来源 267

14.1.3信号的分类 267

14.2信号的安装及处理 269

14.2.1信号的处理方式 269

14.2.2用signal安装信号 270

14.2.3用sigaction安装信号 271

14.2.4信号的阻塞处理 274

14.2.5信号集的操作 277

14.2.6未决信号的处理 277

14.2.7等待信号 279

14.2.8信号处理函数的实现 281

14.3信号的发送 283

14.3.1使用kill发送信号 283

14.3.2使用sigqueue发送信号 284

14.4 SIGALRM信号 285

14.4.1安装SIGALRM信号 285

14.4.2设置定时器 286

14.5 SIGCLD信号 287

14.5.1子进程的退出过程 287

14.5.2 SIGCLD信号的处理 288

14.6小结 290

14.7习题 290

14.8上机实训 290

第四篇 进程间通信(IPC)及网络编程 294

第15章 进程间通信——管道 294

15.1进程间通信概念 294

15.2管道的概念及分类 295

15.2.1管道的概念及特点 295

15.2.2管道的分类 296

15.3管道编程 296

15.3.1创建管道 296

15.3.2读写管道 299

15.3.3关闭管道 301

15.3.4管道I/O 301

15.4命名管道编程 303

15.4.1创建管道 303

15.4.2打开管道及读写 305

15.4.3管道的删除 307

15.5小结 307

15.6习题 307

15.7上机实训 307

第16章 进程间通信——消息队列 309

16.1 System V进程间通信概述 309

16.1.1 Shell环境控制IPC 309

16.1.2进程间通信关键字 311

16.1.3进程间通信标识符 311

16.1.4 IPC权限许可结构 312

16.2消息队列基本概念 313

16.2.1队列 313

16.2.2消息 313

16.2.3消息队列 314

16.3消息队列编程 315

16.3.1键值生成函数 315

16.3.2创建消息队列 316

16.3.3消息发送 319

16.3.4消息接收 322

16.3.5控制消息队列 323

16.4小结 326

16.5习题 326

16.6上机实训 326

第17章 进程间通信——共享内存 330

17.1共享内存基本概念 330

17.1.1共享内存编程模型 330

17.1.2共享内存的映射 331

17.1.3共享内存数据结构 331

17.2共享内存编程 332

17.2.1创建共享内存 332

17.2.2映射共享内存 334

17.2.3删除共享内存映射 336

17.2.4控制共享内存 336

17.3小结 339

17.4习题 339

17.5上机实训 339

第18章 进程间通信——信号量 342

18.1 PV操作原理 342

18.1.1 PV操作的来源 342

18.1.2 PV操作的定义 343

18.1.3 PV操作的应用 344

18.2信号量基本概念 346

18.2.1 Linux信号量简介 346

18.2.2信号量的控制结构 347

18.3信号量编程 347

18.3.1创建信号量 347

18.3.2信号量操作 349

18.3.3信号量控制 353

18.4综合实例——利用信号量实现 生产者-消费者模型 356

18.4.1需求 356

18.4.2需求分析与设计 356

18.4.3实现代码及分析 357

18.5小结 360

18.6习题 360

18.7上机实训 360

第19章Linux网络环境 362

19.1计算机网络基础 362

19.1.1计算机网络分类 362

19.1.2网络拓扑结构 363

19.1.3网络通信协议 364

19.1.4 OSI参考模型 365

19.2 TCP/IP协议概述 367

19.2.1 TCP/IP分层模型 367

19.2.2 TCP/IP协议族 368

19.2.3网络地址 369

19.2.4端口 371

19.3客户机/服务器模型 372

19.4传输控制协议 374

19.4.1连接建立 374

19.4.2连接关闭 374

19.4.3 TCP数据报格式 376

19.5用户数据报协议 377

19.6小结 377

19.7习题 378

19.8上机实训 378

第20章 基本套接字编程 381

20.1套接字编程简述 381

20.1.1半相关与全相关 381

20.1.2地址族与协议族 382

20.1.3面向连接与面向无连接 382

20.1.4套接字类型 383

20.1.5字节序 383

20.1.6套接字连接方式 385

20.1.7数据传输方式 385

20.2套接字数据结构 386

20.2.1套接字地址结构 387

20.2.2通用套接字地址结构 387

20.2.3主机名称数据结构 388

20.2.4服务名称数据结构 390

20.2.5通用数据收发结构 391

20.3基本套接字函数 392

20.3.1字节操作函数 392

20.3.2字节序操作函数 395

20.3.3地址转换函数 395

20.3.4套接字函数 398

20.4套接字选项 415

20.4.1套接字选项函数 415

20.4.2 SO_KEEPALIVE选项 416

20.4.3 SO_LINGER选项 417

20.4.4 SO_RCVBUF和SO_SNDBUF 选项 419

20.4.5 SO_RCVTIMEO和 SO_SNDTIMEO选项 420

20.4.6 SO_REUSEADDR和 SO_REUSEPORI选项 421

20.5 TCP套接字编程 421

20.5.1重复服务器编程 421

20.5.2并发服务器编程 422

20.6 UDP套接字编程 427

20.6.1 UDP编程模型 428

20.6.2 UDP客户/服务器编程 428

20.7小结 431

20.8习题 432

20.9上机实训 432

第21章 综合实例——银行代理收费 服务器 436

21.1程序需求 436

21.2程序实现 437

21.3小结 451

附录1常见面试题 452

附录2 Linux下常见C函数字母索引 470