Linux编程基础(第2版) / 大数据技术与应用丛书
定价:¥59.80
作者: 黑马程序员
出版时间:2025-03
出版社:清华大学出版社
- 清华大学出版社
- 9787302684954
- 2-4
- 41269331-9
- 2025-03
- 工学
- 计算机类
- 通用
- 本科
内容简介
本书是一本基于Linux操作系统的C语言编程入门书籍,全书共分为11章,第1章主要讲解Linux操作系统的安装与使用;第2章讲解Linux操作系统常用命令工具;第3章讲解Shell编程的相关知识;第4~10章是Linux编程的核心知识,包括Linux C编译调试环境、文件I/O操作、Linux进程管理、信号、进程间通信、线程和socket网络编程;第11章讲解并发服务器的原理和实现。
书中每章均配有经典案例,读者可以边学习边练习,以巩固所学的知识,并在实践中提升实际应用能力。
本书附有源代码、习题、教学课件等资源,为帮助初学者更好地学习本书中的内容,还提供了在线答疑,希望得到更多读者的关注。
本书既可作为高等院校本、专科计算机相关专业的专用教材,也可以作为技术爱好者的入门用书。
书中每章均配有经典案例,读者可以边学习边练习,以巩固所学的知识,并在实践中提升实际应用能力。
本书附有源代码、习题、教学课件等资源,为帮助初学者更好地学习本书中的内容,还提供了在线答疑,希望得到更多读者的关注。
本书既可作为高等院校本、专科计算机相关专业的专用教材,也可以作为技术爱好者的入门用书。
目录
目录
第1章初识Linux操作系统1
1.1Linux操作系统概述1
1.1.1Linux操作系统的
起源与发展1
1.1.2Linux操作系统的
发行版本2
1.1.3Linux操作系统的
特点6
1.1.4Linux操作系统的
应用领域7
1.2安装Linux操作系统7
1.2.1安装VMware虚拟
机软件7
1.2.2下载CentOS Stream 9
操作系统镜像文件8
1.2.3安装CentOS Stream 9
操作系统9
1.3通过VMware管理Linux
操作系统23
1.3.1系统关机、挂起与
重启23
1.3.2快照24
1.4Linux操作系统的用户
界面25
1.4.1图形用户界面简介25
1.4.2Shell简介26
1.4.3打开Shell终端27
1.4.4Shell终端的命令
操作28
1.5远程终端访问——
FinalShell30
1.6本章小结32
1.7本章习题32
第2章Linux操作系统常用
命令工具33
2.1用户和用户组管理命令33
2.1.1用户和用户组33
2.1.2用户管理命令34
2.1.3用户组管理命令38
2.1.4用户切换命令39
2.1.5用户权限提升命令41
2.2文件管理的相关概念和
命令43
2.2.1Linux文件系统43
2.2.2Linux目录结构44
2.2.3Linux文件类型46
2.2.4目录管理命令47
2.2.5文件查找命令50
2.2.6文件内容显示命令52
2.2.7文件复制、移动、
删除54
2.2.8压缩解压命令57
2.2.9权限管理63
2.3软件管理命令66
2.3.1RPM66
2.3.2DNF69
2.4进程管理命令72
2.4.1进程查看命令72
2.4.2进程终止命令77
2.4.3服务管理78
2.5网络管理与通信命令79
2.5.1ping79
2.5.2ssh80
2.5.3ip80
2.6帮助命令82
2.6.1man82
2.6.2info83
2.7vim编辑器84
2.7.1vim编辑器的基本
操作84
2.7.2vim编辑器的工作
模式86
2.8本章小结89
2.9本章习题89
第3章Shell编程90
3.1Shell脚本的创建与执行90
3.2Shell变量91
3.2.1用户自定义变量91
3.2.2环境变量94
3.2.3位置变量98
3.2.4预定义变量99
3.3Shell的输入输出100
3.3.1read命令与echo
命令100
3.3.2标准I/O与重
定向102
3.4Shell中的特殊符号104
3.4.1引号104
3.4.2通配符105
3.4.3连接符106
3.4.4管道107
3.5数值运算107
3.5.1let命令107
3.5.2$(())108
3.5.3expr命令108
3.6Shell条件语句109
3.6.1条件判断110
3.6.2if条件语句111
3.6.3case语句114
3.7Shell循环语句115
3.7.1for循环语句115
3.7.2while循环语句116
3.7.3until循环语句118
3.7.4select语句119
3.8Shell函数120
3.8.1函数的定义与
调用120
3.8.2函数中的变量121
3.9Shell数组123
3.10本章小结125
3.11本章习题125
第4章Linux C编译调试环境126
4.1GCC编译工具126
4.1.1GCC简介126
4.1.2gcc命令127
4.2GDB调试工具129
4.2.1GDB简介129
4.2.2gdb调试实例131
4.3make工具133
4.3.1引入make工具134
4.3.2Makefile文件中的
伪目标137
4.3.3Makefile文件中的
变量138
4.3.4Makefile文件的隐
式规则139
4.4本章小结140
4.5本章习题140
第5章文件I/O操作141
5.1文件概述141
5.1.1文件存储方式141
5.1.2文件描述符142
5.2文件基本操作143
5.2.1文件的创建与
删除143
5.2.2文件的打开与
关闭145
5.2.3文件读写147
5.2.4文件定位150
5.2.5文件移动152
5.3文件属性操作154
5.3.1文件属性概述154
5.3.2获取文件属性155
5.3.3检测文件权限157
5.3.4修改文件权限158
5.3.5修改文件属主和
属组159
5.4目录基本操作161
5.4.1目录的创建与
删除161
5.4.2获取当前工作
目录162
5.4.3切换当前工作
目录163
5.4.4目录的打开与
关闭164
5.4.5目录的读取165
5.4.6目录的定位167
5.5文件I/O重定向170
5.6文件I/O错误处理173
5.7本章小结176
5.8本章习题176
第6章Linux进程管理177
6.1进程概述177
6.1.1进程的概念177
6.1.2进程的状态178
6.1.3进程的结构179
6.2获取进程属性181
6.3进程控制182
6.3.1创建进程182
6.3.2exec系列函数185
6.3.3进程休眠190
6.4进程终止190
6.5僵尸进程与孤儿进程193
6.5.1僵尸进程194
6.5.2孤儿进程195
6.6进程等待196
6.6.1wait()函数196
6.6.2waitpid()函数199
6.7守护进程201
6.8本章小结204
6.9本章习题204
第7章信号205
7.1信号概述205
7.1.1信号的概念及
分类205
7.1.2信号的生命周期207
7.2信号发送208
7.2.1kill()函数208
7.2.2raise()函数211
7.2.3alarm()函数213
7.3信号自定义处理214
7.3.1signal()函数214
7.3.2signal()函数的
缺陷216
7.3.3sigaction()函数219
7.4信号集222
7.4.1信号集与操作
函数222
7.4.2信号屏蔽224
7.4.3获取悬挂信号225
7.5等待指定信号228
7.6利用SIGCHLD信号回收
子进程230
7.7本章小结232
7.8本章习题232
第8章进程间通信233
8.1进程间通信概述233
8.2管道234
8.2.1管道概述234
8.2.2无名管道234
8.2.3命名管道239
8.2.4popen()函数和
pclose()函数242
8.3消息队列245
8.3.1消息队列概述245
8.3.2消息队列相关
函数246
8.3.3消息队列通信
实例251
8.4共享内存252
8.4.1共享内存概述252
8.4.2共享内存相关
函数252
8.4.3共享内存通信
实例255
8.5信号量256
8.5.1信号量概述256
8.5.2信号量相关函数257
8.5.3信号量通信实例260
8.6本章小结260
8.7本章习题260
第9章线程261
9.1线程概述261
9.2线程基本操作263
9.2.1获取线程ID263
9.2.2线程创建263
9.2.3线程退出265
9.2.4线程挂起266
9.2.5线程分离268
9.2.6线程取消271
9.2.7线程取消状态
设置273
9.3线程属性275
9.3.1线程属性对象的
初始化与销毁276
9.3.2线程状态276
9.3.3线程调度策略277
9.3.4线程调度参数277
9.3.5线程继承性278
9.3.6线程作用域279
9.3.7线程栈279
9.3.8线程属性设置
实例281
9.4线程并发284
9.5线程同步286
9.5.1互斥锁实现线程
同步286
9.5.2条件变量实现线
程同步289
9.5.3信号量实现线程
同步291
9.6本章小结293
9.7本章习题293
第10章socket网络编程294
10.1socket简介294
10.1.1socket通信
过程294
10.1.2socket地址
结构295
10.1.3socket属性297
10.2socket通信基础知识297
10.2.1字节序298
10.2.2IP地址转换298
10.3socket通信流程300
10.4socket编程接口302
10.4.1socket()302
10.4.2bind()302
10.4.3listen()304
10.4.4connect()305
10.4.5accept()305
10.4.6send()307
10.4.7recv()308
10.4.8close()309
10.5socket网络编程实例310
10.5.1C/S模型——
TCP通信310
10.5.2C/S模型——
UDP通信315
10.6本章小结317
10.7本章习题317
第11章并发服务器318
11.1多进程并发服务器318
11.2多线程并发服务器318
11.3I/O多路复用318
11.4本章小结319
11.5本章习题319
第1章初识Linux操作系统1
1.1Linux操作系统概述1
1.1.1Linux操作系统的
起源与发展1
1.1.2Linux操作系统的
发行版本2
1.1.3Linux操作系统的
特点6
1.1.4Linux操作系统的
应用领域7
1.2安装Linux操作系统7
1.2.1安装VMware虚拟
机软件7
1.2.2下载CentOS Stream 9
操作系统镜像文件8
1.2.3安装CentOS Stream 9
操作系统9
1.3通过VMware管理Linux
操作系统23
1.3.1系统关机、挂起与
重启23
1.3.2快照24
1.4Linux操作系统的用户
界面25
1.4.1图形用户界面简介25
1.4.2Shell简介26
1.4.3打开Shell终端27
1.4.4Shell终端的命令
操作28
1.5远程终端访问——
FinalShell30
1.6本章小结32
1.7本章习题32
第2章Linux操作系统常用
命令工具33
2.1用户和用户组管理命令33
2.1.1用户和用户组33
2.1.2用户管理命令34
2.1.3用户组管理命令38
2.1.4用户切换命令39
2.1.5用户权限提升命令41
2.2文件管理的相关概念和
命令43
2.2.1Linux文件系统43
2.2.2Linux目录结构44
2.2.3Linux文件类型46
2.2.4目录管理命令47
2.2.5文件查找命令50
2.2.6文件内容显示命令52
2.2.7文件复制、移动、
删除54
2.2.8压缩解压命令57
2.2.9权限管理63
2.3软件管理命令66
2.3.1RPM66
2.3.2DNF69
2.4进程管理命令72
2.4.1进程查看命令72
2.4.2进程终止命令77
2.4.3服务管理78
2.5网络管理与通信命令79
2.5.1ping79
2.5.2ssh80
2.5.3ip80
2.6帮助命令82
2.6.1man82
2.6.2info83
2.7vim编辑器84
2.7.1vim编辑器的基本
操作84
2.7.2vim编辑器的工作
模式86
2.8本章小结89
2.9本章习题89
第3章Shell编程90
3.1Shell脚本的创建与执行90
3.2Shell变量91
3.2.1用户自定义变量91
3.2.2环境变量94
3.2.3位置变量98
3.2.4预定义变量99
3.3Shell的输入输出100
3.3.1read命令与echo
命令100
3.3.2标准I/O与重
定向102
3.4Shell中的特殊符号104
3.4.1引号104
3.4.2通配符105
3.4.3连接符106
3.4.4管道107
3.5数值运算107
3.5.1let命令107
3.5.2$(())108
3.5.3expr命令108
3.6Shell条件语句109
3.6.1条件判断110
3.6.2if条件语句111
3.6.3case语句114
3.7Shell循环语句115
3.7.1for循环语句115
3.7.2while循环语句116
3.7.3until循环语句118
3.7.4select语句119
3.8Shell函数120
3.8.1函数的定义与
调用120
3.8.2函数中的变量121
3.9Shell数组123
3.10本章小结125
3.11本章习题125
第4章Linux C编译调试环境126
4.1GCC编译工具126
4.1.1GCC简介126
4.1.2gcc命令127
4.2GDB调试工具129
4.2.1GDB简介129
4.2.2gdb调试实例131
4.3make工具133
4.3.1引入make工具134
4.3.2Makefile文件中的
伪目标137
4.3.3Makefile文件中的
变量138
4.3.4Makefile文件的隐
式规则139
4.4本章小结140
4.5本章习题140
第5章文件I/O操作141
5.1文件概述141
5.1.1文件存储方式141
5.1.2文件描述符142
5.2文件基本操作143
5.2.1文件的创建与
删除143
5.2.2文件的打开与
关闭145
5.2.3文件读写147
5.2.4文件定位150
5.2.5文件移动152
5.3文件属性操作154
5.3.1文件属性概述154
5.3.2获取文件属性155
5.3.3检测文件权限157
5.3.4修改文件权限158
5.3.5修改文件属主和
属组159
5.4目录基本操作161
5.4.1目录的创建与
删除161
5.4.2获取当前工作
目录162
5.4.3切换当前工作
目录163
5.4.4目录的打开与
关闭164
5.4.5目录的读取165
5.4.6目录的定位167
5.5文件I/O重定向170
5.6文件I/O错误处理173
5.7本章小结176
5.8本章习题176
第6章Linux进程管理177
6.1进程概述177
6.1.1进程的概念177
6.1.2进程的状态178
6.1.3进程的结构179
6.2获取进程属性181
6.3进程控制182
6.3.1创建进程182
6.3.2exec系列函数185
6.3.3进程休眠190
6.4进程终止190
6.5僵尸进程与孤儿进程193
6.5.1僵尸进程194
6.5.2孤儿进程195
6.6进程等待196
6.6.1wait()函数196
6.6.2waitpid()函数199
6.7守护进程201
6.8本章小结204
6.9本章习题204
第7章信号205
7.1信号概述205
7.1.1信号的概念及
分类205
7.1.2信号的生命周期207
7.2信号发送208
7.2.1kill()函数208
7.2.2raise()函数211
7.2.3alarm()函数213
7.3信号自定义处理214
7.3.1signal()函数214
7.3.2signal()函数的
缺陷216
7.3.3sigaction()函数219
7.4信号集222
7.4.1信号集与操作
函数222
7.4.2信号屏蔽224
7.4.3获取悬挂信号225
7.5等待指定信号228
7.6利用SIGCHLD信号回收
子进程230
7.7本章小结232
7.8本章习题232
第8章进程间通信233
8.1进程间通信概述233
8.2管道234
8.2.1管道概述234
8.2.2无名管道234
8.2.3命名管道239
8.2.4popen()函数和
pclose()函数242
8.3消息队列245
8.3.1消息队列概述245
8.3.2消息队列相关
函数246
8.3.3消息队列通信
实例251
8.4共享内存252
8.4.1共享内存概述252
8.4.2共享内存相关
函数252
8.4.3共享内存通信
实例255
8.5信号量256
8.5.1信号量概述256
8.5.2信号量相关函数257
8.5.3信号量通信实例260
8.6本章小结260
8.7本章习题260
第9章线程261
9.1线程概述261
9.2线程基本操作263
9.2.1获取线程ID263
9.2.2线程创建263
9.2.3线程退出265
9.2.4线程挂起266
9.2.5线程分离268
9.2.6线程取消271
9.2.7线程取消状态
设置273
9.3线程属性275
9.3.1线程属性对象的
初始化与销毁276
9.3.2线程状态276
9.3.3线程调度策略277
9.3.4线程调度参数277
9.3.5线程继承性278
9.3.6线程作用域279
9.3.7线程栈279
9.3.8线程属性设置
实例281
9.4线程并发284
9.5线程同步286
9.5.1互斥锁实现线程
同步286
9.5.2条件变量实现线
程同步289
9.5.3信号量实现线程
同步291
9.6本章小结293
9.7本章习题293
第10章socket网络编程294
10.1socket简介294
10.1.1socket通信
过程294
10.1.2socket地址
结构295
10.1.3socket属性297
10.2socket通信基础知识297
10.2.1字节序298
10.2.2IP地址转换298
10.3socket通信流程300
10.4socket编程接口302
10.4.1socket()302
10.4.2bind()302
10.4.3listen()304
10.4.4connect()305
10.4.5accept()305
10.4.6send()307
10.4.7recv()308
10.4.8close()309
10.5socket网络编程实例310
10.5.1C/S模型——
TCP通信310
10.5.2C/S模型——
UDP通信315
10.6本章小结317
10.7本章习题317
第11章并发服务器318
11.1多进程并发服务器318
11.2多线程并发服务器318
11.3I/O多路复用318
11.4本章小结319
11.5本章习题319













