图书介绍

Linux C与C++ 一线开发实践【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

Linux C与C++ 一线开发实践
  • 朱文伟,李建英著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302512554
  • 出版时间:2018
  • 标注页数:698页
  • 文件大小:77MB
  • 文件页数:718页
  • 主题词:Linux操作系统-程序设计;C语言-程序设计;C++语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux C与C++ 一线开发实践PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 Linux概述1

1.1 什么是Linux1

1.2 Linux的简史2

1.3 Linux和Windows的比较4

1.4 Linux主要应用领域4

1.5 Linux的版本5

1.6 使用哪个版本的Linux进行学习5

1.7 Linux的特点5

1.8 如何学习Linux6

1.9 命令行还是图形界面6

1.10 计算机启动的基本过程6

1.10.1 按下电源7

1.10.2 BIOS自检7

1.10.3 系统引导8

1.10.4 实模式和保护模式10

1.11 启动内核11

1.12 认识Shell11

1.13 常见的Shell11

1.14 图形界面和字符界面的切换12

1.14.1 在不退出X-Window的情况下切换到字符界面12

1.14.2 强行退出X-Window进入文本模式12

1.14.3 设置每次开机进入字符界面13

1.14.4 从字符界面进入图形界面14

1.15 Shell命令概述14

1.16 环境变量14

第2章 搭建Linux C++开发环境16

2.1 准备Linux虚拟机16

2.2 连接Linux虚拟机20

2.2.1 通过桥接模式连接虚拟机21

2.2.2 主机模式24

2.2.3 通过NAT模式连接虚拟机25

2.3 通过终端工具连接Linux虚拟机27

2.4 搭建Linux下的C++开发环境30

2.4.1 非集成开发方式30

2.4.2 集成开发方式31

2.5 搭建Windows下的Linux C++开发环境37

2.5.1 搭建非集成式的Windows下的Linux C++开发环境37

2.5.2 搭建集成式的Windows下的Linux C++开发环境39

2.6 需要掌握的开发工具49

2.7 vi编辑器的使用50

2.7.1 vi编辑器概述50

2.7.2 vi编辑器的工作模式50

2.7.3 vi的基本操作51

2.7.4 命令行模式下的基本操作51

2.7.5 插入模式55

2.7.6 末行模式操作55

2.8 gcc编译器的使用57

2.8.1 gcc对C语言的编译过程57

2.8.2 gcc所支持的后缀名文件62

2.8.3 gcc的语法格式62

2.8.4 gcc常见选项64

2.9 g++的基本使用75

2.10 gdb调试器的使用77

2.10.1 为何要学习gdb调试器77

2.10.2 gdb简介77

2.10.3 重要准备77

2.10.4 启动gdb77

2.10.5 退出gdb78

2.10.6 gdb的常用命令概述79

2.10.7 file命令加载程序80

2.10.8 list命令显示源代码80

2.10.9 run命令运行程序83

2.10.10 break命令设置断点85

第3章 C++语言基础89

3.1 C++基础知识89

3.1.1 C++程序结构89

3.1.2 注释91

3.1.3 变量和数据类型92

3.1.4 标识92

3.1.5 基本数据类型93

3.1.6 变量的定义和C++11中的auto94

3.1.7 变量的范围98

3.1.8 变量初始化98

3.1.9 常量99

3.1.10 操作符/运算符103

3.1.11 控制台交互110

3.2 控制结构115

3.2.1 条件结构115

3.2.2 循环结构116

3.2.3 分支控制和跳转120

3.2.4 选择结构语句switch122

3.3 函数123

3.4 函数高级话题127

3.4.1 参数按数值传递和按地址传递127

3.4.2 函数重载130

3.4.3 内联函数131

3.4.4 递归132

3.4.5 函数的声明133

3.5 高级数据类型134

3.5.1 数组134

3.5.2 指针145

3.5.3 动态分配内存155

3.5.4 结构体159

3.5.5 自定义数据类型165

3.6 面向对象编程168

3.6.1 类168

3.6.2 构造函数和析构函数171

3.6.3 构造函数重载173

3.6.4 类的指针175

3.6.5 由关键字struct和union定义的类176

3.6.6 操作符重载176

3.6.7 关键字this179

3.6.8 静态成员180

3.6.9 类之间的关系182

3.6.10 多态189

3.7 C++面向对象小结195

3.8 C++高级知识199

3.8.1 模板199

3.8.2 命名空间205

3.8.3 异常处理209

3.8.4 预处理指令213

3.8.5 预定义宏215

3.8.6 C++11中的预定义宏216

3.9 字符串218

3.9.1 字符串基础218

3.9.2 搜索与查找227

3.10 再论异常处理233

3.10.1 基本概念233

3.10.2 抛出异常234

3.10.3 捕获异常234

3.10.4 C++标准异常235

3.10.5 定义新的异常236

3.11 再论函数模板237

3.12 字符集239

3.12.1 计算机上的3种字符集239

3.12.2 查看Linux系统的字符集241

3.12.3 修改Linux系统的字符集242

3.12.4 Unicode编码的实现242

3.12.5 C运行时库对Unicode的支持246

3.12.6 C++标准库对Unicode的支持247

3.12.7 字符集相关实例248

第4章 Linux文件编程249

4.1 文件系统249

4.1.1 基本概念249

4.1.2 文件系统层次结构标准249

4.2 文件的属性信息250

4.3 i节点251

4.3.1 基本概念251

4.3.2 i节点的内容251

4.3.3 i节点的使用状况253

4.4 文件类型254

4.4.1 普通文件255

4.4.2 目录255

4.4.3 块设备文件256

4.4.4 字符设备文件257

4.4.5 链接文件257

4.5 文件权限259

4.6 Linux文件I/O编程的基本方式260

4.7 什么是I/O260

4.8 Linux系统调用下的文件I/O编程261

4.8.1 文件描述符261

4.8.2 打开或创建文件262

4.8.3 创建文件263

4.8.4 关闭文件264

4.8.5 读取文件中的数据266

4.8.6 向文件写入数据268

4.8.7 设定文件偏移量269

4.8.8 获取文件状态271

4.8.9 文件锁定272

4.8.10 建立文件和内存映射276

4.8.11 mmap和共享内存对比279

4.9 C++方式下的文件I/O编程280

4.9.1 流的概念280

4.9.2 流的类库280

4.9.3 打开文件281

4.9.4 关闭文件283

4.9.5 写入文件283

4.9.6 读取文件283

4.9.7 文件位置指针285

4.9.8 状态标志符的验证287

4.9.9 读写文件数据块288

4.10 文件编程中的其他操作290

4.10.1 获取文件有关信息290

4.10.2 创建和删除文件目录项293

第5章 多进程编程296

5.1 进程的基本概念296

5.2 进程的描述296

5.2.1 进程的标识符299

5.2.2 PID文件301

5.3 进程的创建303

5.3.1 使用fork创建进程303

5.3.2 使用exec创建进程305

5.3.3 使用system创建进程311

5.4 进程调度312

5.5 进程的分类315

5.5.1 前台进程315

5.5.2 后台进程315

5.6 守护进程316

5.6.1 守护进程的概念316

5.6.2 守护进程的特点317

5.6.3 查看守护进程317

5.6.4 守护进程的分类318

5.6.5 守护进程的启动方式319

5.6.6 编写守护进程的步骤319

第6章 Linux进程间的通信323

6.1 信号323

6.1.1 信号的基本概念323

6.1.2 与信号相关的系统调用328

6.2 管道336

6.2.1 管道的基本概念336

6.2.2 管道读写的特点337

6.2.3 管道的局限性337

6.2.4 创建管道函数pipe338

6.2.5 读写管道函数read/write338

6.2.6 等待子进程中断或结束的函数wait338

6.2.7 使用管道的特殊情况342

6.3 消息队列342

6.3.1 创建和打开消息队列函数msgget343

6.3.2 获取和设置消息队列的属性函数msgctl343

6.3.3 将消息送入消息队列的函数msgsnd344

6.3.4 从消息队列中读取一条新消息的函数msgrcv345

6.3.5 生成键值函数ftok346

第7章 C++Web编程354

7.1 CGI程序的工作方式354

7.2 架设Web服务器Apache354

第8章 多线程基本编程358

8.1 使用多线程的好处358

8.2 多线程编程的基本概念359

8.2.1 操作系统和多线程359

8.2.2 线程的基本概念359

8.2.3 线程的状态360

8.2.4 线程函数361

8.2.5 线程标识361

8.2.6 C++多线程开发的两种方式361

8.3 利用POSIX多线程API函数进行多线程开发362

8.3.1 线程的创建362

8.3.2 线程的属性367

8.3.3 线程的结束379

8.3.4 线程退出时的清理机会387

8.4 C++11中的线程类392

8.4.1 线程的创建393

8.4.2 线程的标识符401

8.4.3 当前线程this thread402

第9章 多线程高级编程406

9.1 多线程的同步和异步406

9.2 线程同步406

9.3 利用POSIX多线程API函数进行线程同步411

9.3.1 互斥锁411

9.3.2 读写锁417

9.3.3 条件变量424

9.4 C++11/14中的线程同步431

9.5 线程池434

9.5.1 线程池的定义434

9.5.2 使用线程池的原因435

9.5.3 用C++实现一个简单的线程池435

第10章 Linux下的库441

10.1 库的基本概念441

10.2 库的分类441

10.3 静态库442

10.3.1 静态库的基本概念442

10.3.2 静态库的创建和使用442

10.4 动态库445

10.4.1 动态库的基本概念445

10.4.2 动态库的创建和使用445

第11章 TCP/IP协议基础450

11.1 什么是TCP/IP450

11.2 TCP/IP协议的分层结构450

11.3 应用层453

11.3.1 DNS454

11.3.2 端口的概念454

11.4 传输层455

11.4.1 TCP协议455

11.4.2 UDP协议456

11.5 网络层456

11.5.1 IP协议456

11.5.2 ARP协议462

11.5.3 RARP协议464

11.5.4 ICMP协议465

11.6 数据链路层474

11.6.1 数据链路层的基本概念474

11.6.2 数据链路层的主要功能474

第12章 套接字基础476

12.1 网络程序的架构477

12.2 套接字的类型478

12.3 套接字的地址结构478

12.4 主机字节序和网络字节序479

12.5 出错信息的获取481

第13章 TCP套接字编程483

13.1 TCP套接字编程的基本步骤483

13.2 协议簇和地址簇484

13.3 socket地址487

13.3.1 通用socket地址487

13.3.2 专用socket地址488

13.3.3 IP地址的转换489

13.4 TCP套接字编程的相关函数491

13.4.1 socket函数491

13.4.2 bind函数492

13.4.3 listen函数494

13.4.4 accept函数494

13.4.5 connect函数495

13.4.6 write函数497

13.4.7 read函数498

13.4.8 send函数498

13.4.9 recv函数499

13.4.10 close函数499

13.4.11 获得套接字地址499

13.4.12 阻塞套接字的使用504

13.4.13 非阻塞套接字的使用511

第14章 UDP套接字编程525

14.1 UDP套接字编程的基本步骤525

14.2 TCP套接字编程的相关函数526

14.2.1 消息发送函数sendto和sendmsg526

14.2.2 消息接收函数recvfrom和recvmsg527

14.3 实战UDP套接字529

14.4 UDP丢包及无序问题538

第15章 原始套接字编程539

15.1 原始套接字概述539

15.2 与标准套接字的区别539

15.3 原始套接字的编程方法540

15.4 面向链路层的原始套接字编程函数540

15.4.1 创建原始套接字函数540

15.4.2 接收函数recvfrom541

15.4.3 发送函数sendto542

15.5 以太网帧格式545

15.6 获取网络接口的信息547

15.7 实战链路层的原始套接字550

15.7.1 常见的应用场景550

15.7.2 混杂模式577

15.7.3 链路层原始套接字开发注意事项596

15.8 面向IP层的原始套接字编程597

第16章 C++网络性能测试工具iPerf的简析605

16.1 iPerf概述605

16.2 iPerf的特点605

16.3 iPerf的工作原理605

16.4 iPerf的主要功能606

16.5 在Linux下安装iPerf607

16.6 iPerf的简单使用608

16.7 iPerf源代码概述609

16.8 Thread类610

16.8.1 数据成员说明611

16.8.2 主要函数成员611

16.9 SocketAddr类615

16.10 Socket类617

16.10.1 Listen函数618

16.10.2 Accept函数620

16.10.3 Connect函数620

第17章 版本控制和SVN工具623

17.1 SVN简介623

17.1.1 什么是SVN623

17.1.2 使用SVN的好处624

17.1.3 使用SVN的基本流程624

17.2 SVN服务器的安装和配置624

17.2.1 VisualSVN服务器的安装和配置624

17.2.2 SVN客户端在Windows上的使用629

第18章 C++跨平台开发634

18.1 什么是跨平台634

18.2 C++的可移植性634

18.2.1 可移植性的概念634

18.2.2 影响C++语言可移植性的因素635

18.3 设计跨平台软件的原则638

18.3.1 避免语言的扩展特性638

18.3.2 实现动态的处理638

18.3.3 使用脚本文件进行管理639

18.3.4 使用安全的数据串行化640

18.3.5 跨平台开发中的编译及测试641

18.3.6 实现抽象641

18.4 建立跨平台的开发环境642

18.4.1 跨平台开发编译器的选择642

18.4.2 建立跨平台的Make系统643

18.5 C++语言跨平台软件开发的实现648

18.6 C++语言跨平台的开发策略649

18.7 建立统一的工程包650

18.8 建立跨平台的代码库650

18.9 工厂模式与单例模式的实现651

18.10 利用平台依赖库封装平台相关代码651

18.11 处理器的差异控制652

18.11.1 内存对齐652

18.11.2 字节顺序653

18.11.3 类型的大小654

18.11.4 使用预编译处理类型差异654

18.12 编译器的差异控制655

18.12.1 实现平台无关的代码655

18.12.2 内存管理657

18.12.3 容错性的影响657

18.12.4 利用日志管理异常657

18.13 操作系统和接口库658

18.13.1 文件描述符的限制659

18.13.2 进程和线程的限制659

18.13.3 操作系统抽象层659

18.14 用户界面660

18.14.1 跨平台软件图形界面的设计660

18.14.2 wxWidgets简介661

18.14.3 使用wxWidgets开发跨平台软件的界面661

第19章 Linux下的安全编程663

19.1 本章概述663

19.2 密码学基础知识665

19.2.1 密码学概述665

19.2.2 对称密钥加密技术665

19.2.3 公开密钥加密技术666

19.2.4 单向散列函数算法667

19.2.5 数字签名基础知识667

19.3 身份认证基础知识668

19.3.1 身份认证概述668

19.3.2 身份认证的方式669

19.4 密码编程的两个重要库670

19.5 OpenSSL的简介671

19.6 OpenSSL模块分析671

19.6.1 OpenSSL源代码模块结构671

19.6.2 OpenSSL加密库调用方式672

19.6.3 OpenSSL支持的对称加密算法673

19.6.4 OpenSSL支持的非对称加密算法673

19.6.5 OpenSSL支持的信息摘要算法673

19.6.6 OpenSSL密钥和证书管理673

19.7 面向对象与OpenSSL674

19.7.1 BIO接口675

19.7.2 EVP接口676

19.8 OpenSSL的下载、编译和升级安装677

19.9 对称加解密算法的分类680

19.9.1 流对称算法680

19.9.2 分组对称算法680

19.9.3 了解库和头文件684

19.10 利用OpenSSL进行对称加解密686

19.10.1 一些基本概念686

19.10.2 对称加解密相关函数687

19.11 Crypto++的简介695

19.12 Crypto++的编译696

19.13 Crypto++进行AES加解密696

热门推荐