图书介绍

Linux C程序设计大全2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

Linux C程序设计大全
  • 吴岳等编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302192114
  • 出版时间:2009
  • 标注页数:872页
  • 文件大小:209MB
  • 文件页数:896页
  • 主题词:Linux操作系统-程序设计;C语言-程序设计

PDF下载


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

下载说明

Linux C程序设计大全PDF格式电子书版下载

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

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

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

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

图书目录

第1篇 Linux下C语言基础2

第1章 Linux简介2

1.1 GNU简介2

1.2 Linux简介2

Linux发展史2

Linux发行版4

Linux内核版本5

Linux与UNIX的关系5

Linux在服务器方面的发展5

Linux在嵌入式系统方面的发展6

Linux在桌面系统方面的发展7

1.3 Linux环境下的其他编程语言7

C++7

Java10

Perl12

Python13

Ruby14

PHP14

第2章 控制结构17

2.1 goto语句17

C语言中的无条件跳转17

使用goto语句进行出错处理18

出错处理的一般模型20

2.2 C语言中的分支结构21

分支结构的翻译22

使用goto语句实现分支结构23

2.3短路计算24

短路计算24

&&运算的短路计算25

‖运算的短路计算26

2.4 C语言中的循环结构28

while循环28

do…while循环30

for循环32

2.5 switch语句34

switch语句的应用34

使用goto语句实现switch语句35

2.6优化控制结构37

表达式优化——使用替换程序中的乘除法37

表达式优化——常量折叠38

表达式优化——使用数学公式38

表达式优化——存储问题40

分支优化——改变判断顺序40

分支优化——使用switch语句44

循环优化——一次性计算46

第3章 C语言中的函数49

3.1函数的本质49

3.2变量的作用域和生命期50

全局变量50

局部变量51

3.3变量的初始值53

全局变量的初始值53

局部变量的初始值54

3.4与函数有关的优化55

函数调用与程序优化55

变量存储优化58

3.5编写多文件程序——变量的存储类别60

存储类别60

static变量的作用——改变变量的生命期60

static变量的作用——实现封装和模块化设计63

3.6编写多文件的程序——链接的作用66

链接多个文件66

链接时符号解析规则68

链接规则的应用68

3.7可变参数72

可变参数的概念72

实现一个简单的可变参数的函数73

可变参数实例75

关于printf函数的疑问——缺少整型参数80

关于printf函数的疑问——缺少字符串地址参数81

第4章 C语言中的指针与字符串84

4.1 sizeof运算符84

sizeof运算符的应用——得到内置类型的大小84

sizeof运算符的应用——得到复合类型的大小85

4.2指针的应用86

指针与别名陷阱86

数组的指针88

指针的指针90

指针与参数传递91

指针类型的意义98

void*型指针100

4.3函数的指针103

C语言中的函数指针103

函数指针的应用——回调函数106

函数指针数组111

4.4字符串113

字符串与字符数组113

字符串与指针114

限定修饰符const116

const关键字修饰指针——在指针定义之前117

const关键字修饰指针——在指针定义之中117

const关键字修饰指针——在指针定义之前和定义之中118

使用const关键字的意义119

第5章 C语言的高级技术122

5.1结构体与共同体122

结构体中成员变量的存储分布122

内存对齐123

5.2位运算126

掩码运算127

不安全的位运算129

异或运算的特性130

移位运算的陷阱133

移位运算的实例134

5.3预处理136

常用的代码组织形式136

调试开关142

5.4 C99新标准关键字详解145

inline关键字的概念145

inline关键字实例145

inline关键字使用总结146

restrict关键字的概念147

restrict关键字的应用148

第2篇 C语言开发环境152

第6章 vi与vim编辑器152

6.1 vi编辑器入门152

vi简介152

vi的工作模式152

6.2 vi一般操作153

进入vi153

文本插入操作156

文本删除操作158

文本复制操作159

撤销命令161

重复命令162

退出vi162

6.3 vi的增强操作164

替换命令164

光标移动165

按行移动光标166

按字移动光标167

按句移动光标168

按段移动光标169

文本行的移动169

文本的异行移动170

屏幕滚动171

查找命令171

替换命令173

窗口的切分175

设置环境176

第7章 gcc编译器177

7.1初探gcc编译器177

从经典的hello world开始177

gcc编译流程178

7.2 gcc常用选项179

gcc常用选项汇总179

-c选项179

-S选项180

-E选项182

-o选项182

-I选项183

-g选项183

7.3链接原理183

链接器的任务183

目标文件184

ELF格式的可重定位目标文件185

目标文件中的符号表187

重定位的概念191

符号的重定位信息192

7.4关于库192

使用库的优势192

静态库的概念194

创建静态库194

使用静态库195

动态库的概念197

创建动态库197

使用动态库199

7.5 gcc工具链201

第8章 makefile203

8.1 makefile文件入门203

makefile文件的组成内容203

makefile文件包含203

make工具的退出码204

8.2书写makefile规则205

使用基本规则205

使用隐式规则206

使用伪目标207

使用通配符209

搜索源文件209

8.3使用命令210

显示命令211

执行命令211

命令出错212

8.4使用变量213

使用普通变量213

变量中的变量215

追加变量的值217

自动化变量218

8.5使用条件判断219

条件表达式219

表达式实例221

8.6使用函数221

函数调用的语法222

字符串处理函数222

文件名操作函数229

foreach函数233

if函数233

call函数234

origin函数235

shell函数235

8.7 makefile实例236

makefile实例——项目中的总makefile236

makefile实例——makefile模板238

第9章 gdb240

9.1列出源程序240

不带参数的list命令240

带一个参数的list命令241

带两个参数的list命令242

9.2运行程序的命令243

9.3操作断点的命令244

设置断点244

显示当前gdb的断点信息247

删除指定的断点247

禁止或启用断点248

清除断点248

观察点249

设置断点实例250

9.4查看运行时数据254

数据观察命令254

对程序中函数的调用256

查看表达式的值256

查看数组的值257

变量的输出格式257

查看内存258

自动显示变量259

设置显示选项263

显示变量的历史记录265

查看寄存器266

查看使用gdb环境变量267

查看数据实例268

9.5改变程序的执行273

修改变量的值273

跳转执行274

信号的产生及处理275

强制调用函数276

强制函数返回276

9.6 gdb高级应用278

产生core文件278

跟踪栈上数据278

绑定运行进程281

源文件搜索283

机器语言工具283

其他有用的调试命令284

第3篇 Linux进程操作288

第10章 进程环境288

10.1程序的启动和退出288

在shell中启动一个程序288

加载一个程序289

加载地址290

退出程序291

进程终止处理函数292

10.2 Linux进程内存管理294

数据的内部存储294

C程序的存储布局——代码段296

C程序的存储布局——数据段和缓冲段298

C程序的存储布局——栈299

C程序的存储布局——堆301

常量的存储302

动态内存管理302

动态内存分配的深入研究305

10.3 shell环境309

命令行参数310

得到程序文件名311

环境变量312

得到指定的环境变量314

设置一个环境变量315

得到进程结束状态320

使用errno调试程序322

输出错误原因324

10.4全局跳转325

局部跳转的局限性326

使用全局跳转327

使用全局跳转代替局部跳转329

第11章 进程控制332

11.1进程标识符332

进程ID332

进程中重要的ID值333

11.2进程操作335

创建一个进程335

父子进程的共享资源337

fork函数的出错情况340

创建一个共享空间的子进程341

在函数内部调用vfork函数342

退出进程344

使用exit函数检查进程出错信息345

exit函数与内核函数的关系346

设置进程所有者346

调试多进程——设置跟踪流348

调试多进程——使用gdb的attach命令348

11.3执行程序349

执行一个新程序350

执行解释器文件352

在程序中执行shell命令355

实现system函数356

11.4关系操作358

等待进程退出358

等待指定的进程362

僵尸进程的概念364

产生一个僵尸进程364

避免僵尸进程的产生366

输出进程统计信息369

第12章 时间和日历历程372

12.1系统时间372

12.2日历时间374

第13章 信号及信号处理378

13.1信号的基础378

信号的基本概念378

产生信号379

处理信号379

常用信号的使用方法380

13.2信号的影响382

重入382

原子操作385

中断系统调用387

13.3信号处理函数387

设置信号处理函数387

发送信号391

向进程本身发送信号392

设置Linux定时器393

定时等待I/O395

挂起进程397

进程休眠399

13.4信号集与屏蔽信号402

信号集和信号集处理函数402

屏蔽信号404

处理未决信号406

高级信号注册函数409

信号选项实例——SA_NOCLDWAIT选项410

信号选项实例——SA_NODEFFER选项412

信号选项实例——SA_RESETHAND选项414

第14章 进程间通信416

14.1进程间通信概述416

进程间通信简介416

进程间通信的难点417

IPC的多种方式417

14.2管道418

管道的概念418

匿名半双工管道418

匿名半双工管道的读写操作420

创建管道的标准库函数423

14.3 FIFO管道426

FIFO的概念426

创建FIFO427

FIFO的读写操作428

FIFO的缺点432

14.4 System V IPC/POSIX IPC433

IPC对象的概念433

IPC对象的问题435

IPC对象系统命令435

14.5共享内存436

共享内存的概念436

共享内存的创建437

共享内存的操作439

共享内存使用注意事项442

14.6信号量442

信号量的概念442

信号量的创建443

信号量集的操作446

14.7消息队列448

消息队列的概念448

创建消息队列449

读写消息队列452

第15章 线程456

15.1线程与进程456

线程的概念456

线程的优势457

15.2线程标识符458

15.3线程基本操作458

创建线程458

向线程体函数传递参数460

线程访问资源的限制462

终止线程466

正确得到线程退出信息的方法470

取消一个线程的运行473

线程退出函数476

第16章 线程高级操作480

16.1线程同步——使用互斥量480

初始化与销毁互斥量480

得到与释放互斥量481

使用互斥量的实例482

16.2线程同步——使用读写锁489

初始化与销毁读写锁489

得到与释放互斥锁490

使用互斥量与读写锁的比较491

16.3线程属性499

创建和销毁属性结构499

线程的分离状态500

分离一个已经创建的线程502

线程栈的属性503

第4篇 Linux文件操作508

第17章 文件I/O508

17.1文件描述符的概念508

17.2文件I/O操作508

打开一个文件508

打开文件的出错情况512

关闭一个文件513

创建一个新文件514

文件定位515

文件截短517

清空一个文件521

文件的读写操作523

文件同步527

17.3文件描述符操作529

复制文件描述符529

1/O重定向概念及其应用531

控制文件534

修改打开文件的文件状态535

17.4非阻塞文件I/O538

非阻塞I/O的概念538

以非阻塞方式打开文件539

将一个打开文件设置为非阻塞方式541

17.5内存映射I/O543

内存映射I/O的概念543

创建一个内存映射544

撤销一个内存映射547

内存映射同步549

更改内存映射的权限552

第18章 文件管理555

18.1文件状态555

18.2文件类型556

18.3文件权限559

访问权限559

设置用户ID位和设置组ID位561

设置用户ID位的作用562

使用设置用户ID位的实例562

18.4文件权限操作566

测试文件访问权限566

设置用户ID位与文件权限测试568

使用文件权限屏蔽字569

在shell中使用文件权限屏蔽字570

在程序中使用文件权限屏蔽字570

改变文件访问权限572

在shell中改变文件权限573

在程序中改变文件权限574

改变一个打开的文件权限575

18.5文件系统结构579

18.6文件的硬链接583

创建一个硬链接584

删除一个硬链接585

18.7改变文件所有者589

18.8操作文件的时间593

第19章 目录操作597

19.1目录的权限597

目录的访问权限597

测试目录的访问权限598

19.2目录操作599

创建一个目录599

删除一个目录600

目录项结构601

打开与关闭目录602

读目录603

读目录操作的实例——实现自己的ls命令606

得到目录文件的读写位置608

定位目录610

回卷目录文件611

19.3进程的工作目录612

工作目录的概念613

改变进程的工作目录613

得到进程的当前工作目录615

子进程工作目录对父进程的影响618

第20章 特殊文件622

20.1符号链接操作622

符号链接622

符号链接的功能622

创建符号链接623

创建指向不存在文件的符号链接625

读写符号链接的目的文件626

读写多重符号链接的目的文件628

读写符号链接630

取得符号链接的状态633

更改符号链接的所有者637

20.2 proc文件系统642

proc文件系统642

常用的内核信息642

读取内核信息644

进程状态信息652

读取进程状态653

proc文件系统变成实例——实现自己的ps命令655

第21章 基于流的I/O658

21.1流与缓冲658

21.2基于流的文件操作660

打开和关闭流660

文件内容的冲洗662

以字符为单位读写数据664

以行为单位读写数据666

gets函数的漏洞667

逐行读取文件内容668

输出xml形式的配置文件669

读写数据块671

文件读写实例——实现cp命令672

文件读写实例——字符统计674

文件读写实例——目录下所有文件的字符统计675

第5篇 Linux网络编程680

第22章 TCP和UDP协议680

22.1计算机网络的体系结构简介680

计算机网络体系结构简介680

OSI参考模型中各层功能描述680

TCP/IP参考模型的各层功能描述681

面向连接服务和无连接服务682

22.2客户/服务器方式简介682

22.3用户数据报协议UDP683

用户数据报的格式683

用户数据报检验和的计算684

UDP用户数据报的特性及用途686

22.4传输控制协议TCP686

TCP简介686

TCP报文段的首部686

TCP数据编号与确认688

TCP的流量控制与拥塞控制688

TCP的运输连接管理690

第23章 网络编程基础693

23.1套接字概念693

23.2准备工作694

字节序694

地址格式695

地址形式转换697

获得主机信息698

地址映射700

23.3套接字基础编程701

建立和销毁套接字描述符701

地址绑定703

建立一个连接704

最简单的网络应用程序——服务器端707

最简单的网络应用程序——客户端710

使用文件读写函数读写套接字713

使用完整读写函数的网络应用程序716

面向连接的数据传输720

面向连接的网络应用程序——服务器端721

面向连接的网络应用程序——客户端724

无连接的数据传输727

无连接的网络应用程序——服务器端729

无连接的网络应用程序——客户端731

23.4非阻塞套接字734

非阻塞网络应用程序——服务器端734

非阻塞网络应用程序——客户端737

第24章 网络编程进阶740

24.1套接字编程深入740

bind函数的作用740

并发服务器741

UDP协议的connect函数应用743

24.2多路选择I/O746

多路选择I/O的概念746

实现多路选择I/O747

使用多路选择I/O处理多个连接750

屏蔽信号的多路选择I/O754

对比select函数和pselect函数755

轮询I/O758

24.3非网络通信套接字759

非命名UNIX域套接字759

命名UNIX域套接字761

UNIX域套接字实例——服务器端762

UNIX域套接字实例——客户端766

第25章 网络编程实例——实现文件传输程序769

25.1程序设计769

整体程序设计769

客户端程序设计769

服务器端程序设计770

25.2文件传输程序的实现773

客户端程序的实现——头文件773

客户端程序的实现——程序主函数774

客户端程序的实现——命令拆分函数777

客户端程序的实现——命令处理模块779

服务器端程序的实现——头文件790

服务器端程序的实现——程序主函数791

服务器端程序的实现——客户端命令处理模块794

25.3测试和验证801

第26章 网络编程实例——简单的Web服务器802

26.1程序设计802

整体程序设计802

步骤1——解析客户端发送的内容803

步骤2——寻找客户端需要的文件804

步骤3——将客户端信息返回804

26.2 Web服务器的实现805

Web服务器程序的实现——头文件806

Web服务器程序的实现——程序主函数806

Web服务器程序的实现——请求处理模块811

26.3测试和验证816

第6篇 shell脚本知识818

第27章 shell脚本基础818

27.1编写最简单的shell脚本818

使用shell脚本的原因818

脚本内容819

运行一段脚本820

27.2 shell中的变量821

用户自定义变量821

引用变量823

为表达式求值824

变量的类型826

操作自定义变量828

位置变量830

重新分配位置变量831

27.3退出状态833

27.4条件测试835

测试文件状态835

测试时使用逻辑操作符837

字符串测试839

测试数值841

第28章 shell脚本中的控制结构844

28.1 shell脚本中的命令替换844

28.2分支结构845

if/else分支结构845

多重分支结构847

使用case结构的分支语句848

在case语句中使用逻辑表达式851

28.3条件测试命令的值853

测试整数与字符串853

测试字符串和空值854

测试未初始化的变量855

测试“false”的值856

28.4循环结构857

while循环结构858

until循环结构861

for循环结构864

break和continue命令866

28.5定义函数和使用函数869

热门推荐