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

- 吴岳等编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302192114
- 出版时间:2009
- 标注页数:872页
- 文件大小:209MB
- 文件页数:896页
- 主题词:Linux操作系统-程序设计;C语言-程序设计
PDF下载
下载说明
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
热门推荐
- 3065368.html
- 309151.html
- 3565708.html
- 955370.html
- 2786567.html
- 3200100.html
- 1914770.html
- 3751271.html
- 696069.html
- 3841655.html
- http://www.ickdjs.cc/book_1234910.html
- http://www.ickdjs.cc/book_2848851.html
- http://www.ickdjs.cc/book_3388574.html
- http://www.ickdjs.cc/book_497896.html
- http://www.ickdjs.cc/book_2979957.html
- http://www.ickdjs.cc/book_864855.html
- http://www.ickdjs.cc/book_85286.html
- http://www.ickdjs.cc/book_395829.html
- http://www.ickdjs.cc/book_3040547.html
- http://www.ickdjs.cc/book_2121348.html