首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

目  录

第一篇  Linux和C编程基础

第1章  Linux系统概述...... 2

1.1  Linux操作系统介绍...... 2

1.1.1  Linux的发展历程...... 2

1.1.2  Linux的特性...... 2

1.1.3  Linux的内核版本和发行版本...... 3

1.2  C语言简介...... 4

1.2.1  C语言的发展历史...... 4

1.2.2  C语言的特点...... 5

1.3  Linux的安装、启动与关闭...... 5

1.4  Linux的基本使用...... 5

1.4.1  Linux终端...... 5

1.4.2  Linux Shell. 5

1.4.3  Linux的常用命令...... 6

1.5  Linux下程序的开发环境和开发过程...... 9

1.6  习题...... 12

第2章  C编程基础、Vi和Emacs编辑器...... 13

2.1  C程序的结构...... 13

2.2  C语言的基本数据类型...... 14

2.2.1  整型...... 14

2.2.2  浮点型...... 16

2.2.3  字符型...... 17

2.3  运算符和表达式...... 19

2.3.1  算术运算符与算术表达式...... 20

2.3.2  赋值运算符与赋值表达式...... 22

2.3.3  逗号运算符与逗号表达式...... 22

2.4  标准输入输出函数...... 23

2.4.1  字符输出函数putchar. 23

2.4.2  字符输入函数getchar. 24

2.4.3  格式化输出函数printf. 24

2.4.4  格式化输入函数scanf. 26

2.5  Vi编辑器的使用...... 27

2.5.1  Vi的工作模式...... 27

2.5.2  启动Vi. 28

2.5.3  保存文件和退出Vi. 29

2.5.4  光标的移动...... 29

2.5.5  文本的删除...... 30

2.5.6  文本查找和替换...... 30

2.5.7  文本的复制与粘贴...... 30

2.6  Emacs编辑器的使用...... 31

2.7  命名规范...... 33

2.7.1  标识符...... 33

2.7.2  关键字...... 33

2.7.3  命名规范...... 33

2.8  面试题选与实例精讲...... 34

2.8.1  面试题选...... 34

2.8.2  实例精讲...... 35

2.9  习题...... 37

第3章  C程序控制结构和gcc编译器...... 38

3.1  C程序的控制结构...... 38

3.1.1  C程序语句概述...... 38

3.1.2  C程序的3种基本控制结构...... 39

3.2  分支控制结构...... 40

3.2.1  关系运算符与关系表达式...... 40

3.2.2  逻辑运算符与逻辑表达式...... 41

3.2.3  if语句...... 42

3.2.4  switch语句...... 44

3.3  循环控制结构...... 46

3.3.1  while语句...... 46

3.3.2  do...while语句...... 47

3.3.3  for语句...... 48

3.3.4  break语句和continue语句...... 50

3.4  gcc编译器...... 51

3.4.1  程序的编译过程...... 51

3.4.2  gcc的常用选项...... 52

3.4.3  gcc的报错类型及对策...... 54

3.5  面试题选与实例精讲...... 55

3.5.1  面试题选...... 55

3.5.2  实例精讲...... 56

3.6  习题...... 58

第4章  C函数、数组、指针和调试器gdb.. 59

4.1  函数...... 59

4.1.1  函数的定义...... 59

4.1.2  函数的调用...... 61

4.1.3  变量的访问控制和存储类别...... 64

4.2  数组...... 67

4.2.1  一维数组的定义和使用...... 67

4.2.2  二维数组的定义和使用...... 67

4.2.3  字符数组和字符串...... 69

4.3  指针...... 70

4.3.1  地址和指针...... 70

4.3.2  指针的定义和使用...... 71

4.3.3  指针和数组...... 72

4.3.4  指针和函数...... 75

4.3.5  指向字符串的指针...... 79

4.4  字符串函数...... 82

4.4.1  puts和gets.. 82

4.4.2  strcpy和strncpy... 82

4.4.3  strcat和strncat. 83

4.4.4  strcmp和strncmp... 83

4.4.5  strlen... 84

4.4.6  strlwr和strupr. 84

4.4.7  strstr和strchr. 84

4.5  调试器gdb... 85

4.5.1  启动和退出gdb... 85

4.5.2  显示和查找程序源代码...... 86

4.5.3  执行程序和获得帮助...... 87

4.5.4  设置和管理断点...... 87

4.5.5  查看和设置变量的值...... 91

4.5.6  控制程序的执行...... 93

4.6  面试题选...... 95

4.7  习题...... 106

第5章  C语言预处理、结构体和make的使用...... 107

5.1  C语言预处理命令...... 107

5.1.1  宏定义...... 107

5.1.2  文件包含...... 109

5.1.3  条件编译...... 110

5.2  结构体和共用体...... 111

5.2.1  声明和引用结构体...... 111

5.2.2  结构体和数组...... 113

5.2.3  结构体和指针...... 114

5.2.4  共用体...... 116

5.2.5  使用typedef. 117

5.3  位运算...... 117

5.3.1  位运算符和位运算...... 117

5.3.2  位域...... 119

5.4  make的使用和Makefile的编写...... 120

5.4.1  make的一般使用...... 121

5.4.2  Makefile文件的构成...... 123

5.4.3  使用变量...... 127

5.4.4  隐含规则...... 131

5.4.5  使用条件语句...... 132

5.4.6  使用库...... 133

5.4.7  make命令参数详解...... 134

5.5  面试题选...... 135

5.6  进一步学习建议...... 140

5.7  习题...... 140

第二篇  Linux系统编程

第6章  文件操作...... 142

6.1  系统编程概述...... 142

6.2  Linux的文件结构...... 142

6.2.1  Linux的文件系统模型...... 143

6.2.2  文件的分类...... 144

6.2.3  文件的访问权限控制...... 145

6.3  文件的输入输出...... 147

6.3.1  文件的创建、打开与关闭...... 147

6.3.2  文件的读写...... 149

6.3.3  文件读写指针的移动...... 150

6.3.4  dup、dup2、fcntl、ioctl系统调用...... 152

6.4  文件属性操作...... 160

6.4.1  获取文件属性...... 160

6.4.2  设置文件属性...... 162

6.5  文件的移动和删除...... 164

6.5.1  文件的移动...... 164

6.5.2  文件的删除...... 165

6.6  目录操作...... 166

6.6.1  目录的创建和删除...... 166

6.6.2  获取当前目录...... 167

6.6.3  设置工作目录...... 167

6.6.4  获取目录信息...... 168

6.7  编程实践:实现自己的ls命令...... 170

6.8  习题...... 176

第7章  进程控制...... 177

7.1  进程概述...... 177

7.1.1  Linux进程...... 177

7.1.2  进程控制...... 179

7.1.3  进程的内存映像...... 179

7.2  进程操作...... 180

7.2.1  创建进程...... 180

7.2.2  创建守护进程...... 185

7.2.3  进程退出...... 187

7.2.4  执行新程序...... 188

7.2.5  等待进程结束...... 191

7.3  进程的其他操作...... 194

7.3.1  获得进程ID.... 194

7.3.2  setuid和setgid... 194

7.3.3  改变进程的优先级...... 196

7.4  编程实践:实现自己的myshell. 197

7.5  习题...... 203

第8章  线程控制...... 204

8.1  线程和进程关系...... 204

8.2  创建线程...... 205

8.2.1  线程创建函数pthread_create.. 205

8.2.2  线程属性...... 207

8.3  线程终止...... 208

8.4  私有数据...... 210

8.5  线程同步...... 212

8.5.1  互斥锁...... 212

8.5.2  条件变量...... 213

8.5.3  异步信号...... 216

8.6  出错处理...... 216

8.6.1  错误检查...... 216

8.6.2  错误码...... 217

8.6.3  错误的提示信息...... 218

8.7  习题...... 219

第9章  信号及信号处理...... 220

9.1  Linux信号介绍...... 220

9.1.1  信号的来源...... 220

9.1.2  信号的种类...... 220

9.1.3  进程对信号的响应...... 223

9.2  信号处理...... 223

9.2.1  信号的捕捉和处理...... 223

9.2.2  信号处理函数的返回...... 227

9.2.3  信号的发送...... 231

9.2.4  信号的屏蔽...... 236

9.3  编程中如何获得帮助...... 240

9.4  编程实践:应用实例...... 240

9.4.1  实例一:信号的发送与处理...... 240

9.4.2  实例二:信号应用于事件通知...... 242

9.5  习题...... 244

第10章  进程间通信...... 245

10.1  进程间通信概述...... 245

10.2  管道...... 246

10.2.1  管道的概念...... 246

10.2.2  管道的创建与读写...... 246

10.2.3  管道的应用实例...... 250

10.3  有名管道...... 251

10.3.1  有名管道的概念...... 251

10.3.2  有名管道的创建与读写...... 252

10.3.3  有名管道的应用实例...... 253

10.4  消息对列...... 256

10.4.1  消息对列的基本概念...... 256

10.4.2  消息队列的创建与读写...... 257

10.4.3  获取和设置消息队列的属性...... 260

10.4.4  消息队列的应用实例...... 262

10.5  信号量...... 265

10.5.1  信号量的基本概念...... 265

10.5.2  信号量的创建与使用...... 265

10.5.3  信号量的应用实例...... 268

10.6  共享内存...... 270

10.6.1  共享内存的数据结构...... 270

10.6.2  共享内存的创建与操作...... 270

10.6.3  共享内存的应用实例...... 271

10.7  库的创建和使用...... 275

10.7.1  Linux库的概念...... 275

10.7.2  静态库的创建和使用...... 276

10.7.3  动态库的创建和使用...... 277

10.8  进一步学习建议...... 279

10.9  习题...... 279

第三篇  Linux网络和图形界面编程

第11章  网络编程...... 282

11.1  网络编程基本原理...... 282

11.1.1  网络模型与协议...... 282

11.1.2  地址...... 284

11.1.3  端口...... 285

11.1.4  IP协议...... 285

11.1.5  用户数据报协议UDP... 286

11.1.6  传输控制协议TCP... 286

11.1.7  客户机/服务器模型...... 287

11.2  套接字编程...... 287

11.2.1  套接字地址结构...... 288

11.2.2  创建套接字...... 288

11.2.3  建立连接...... 289

11.2.4  绑定套接字...... 290

11.2.5  在套接字上监听...... 290

11.2.6  接受连接...... 291

11.2.7  TCP套接字的数据传输...... 291

11.2.8  UDP套接字的数据传输...... 292

11.2.9  关闭套接字...... 294

11.2.10  主要系统调用函数...... 294

11.3  一个面向连接的Client/Server实例...... 301

11.4  编写安全的代码...... 308

11.4.1  网络攻击...... 308

11.4.2  缓冲区溢出...... 309

11.4.3  输入检查...... 310

11.5  编程实践:编程实现端口扫描器实例...... 311

11.6  进一步学习建议...... 314

11.7  习题...... 314

第12章  GTK+图形界面编程...... 315

12.1  Linux下的图形界面编程...... 315

12.1.1  Qt和GTK+... 315

12.1.2  GTK+简介...... 315

12.2  一个简单的例子...... 316

12.3  消息和回调函数...... 319

12.4  GTK+的面向对象机制...... 320

12.5  排列控件...... 323

12.5.1  使用box排列控件...... 323

12.5.2  使用table排列控件...... 325

12.6  常用控件...... 330

12.6.1  进度条、微条按钮、组合框...... 330

12.6.2  表格控件...... 332

12.6.3  生成对话框...... 333

12.6.4  使用菜单...... 334

12.7  进一步学习建议...... 336

第四篇  Linux项目实践

第13章  项目实践:BT下载软件的开发...... 338

13.1  BT软件简述...... 338

13.2  BitTorrent协议...... 339

13.2.1  概要介绍...... 339

13.2.2  基于BT协议的文件分发系统的构成...... 339

13.2.3  B编码...... 340

13.2.4  种子文件的结构...... 340

13.2.5  与Tracker交互...... 342

13.2.6  peer之间的通信协议...... 343

13.2.7  关键算法和策略...... 345

13.3  系统结构设计...... 347

13.4  各个模块的设计和实现...... 348

13.4.1  种子解析模块的设计和实现...... 349

13.4.2  位图管理模块的设计和实现...... 359

13.4.3  出错处理模块的设计和实现...... 363

13.4.4  运行日志模块的设计和实现...... 364

13.4.5  信号处理模块的设计和实现...... 365

13.4.6  Peer管理模块的设计和实现...... 366

13.4.7  消息处理模块的设计和实现...... 372

13.4.8  缓冲管理模块的设计和实现...... 384

13.4.9  策略管理模块的设计和实现...... 393

13.4.10  连接Tracker模块的设计和实现...... 397

13.4.11  与peer交换数据模块的设计和实现...... 403

13.4.12  主函数的设计和实现...... 411

13.4.13  调试和测试...... 412

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论