Linux编程基础

Linux编程基础"

作者:黑马程序员
ISBN:9787302477389
定价:¥58
字数:千字
页数:
出版时间:2017.10.01
开本:
版次:1-14
装帧:
出版社:清华大学出版社
简介

本书分11章,首先介绍Linux的背景、开发环境、网络配置与远程操作及管理;其次讲解Linux系统操作中的基本命令以及基础开发中使用的工具;然后讲解Shell编程的基本语法、Linux系统中的用户和用户组以及Linux文件系统与操作;之后对Linux程序开发涉及的进程、信号、线程、网络编程等重点难点知识进行讲解;最后介绍Linux系统中高并发服务器的几种模型。本书中的每个章节都采用理论与案例结合的模式,在理论知识后通过切实可行的案例帮助学生在学习的同时实践并巩固所学知识。

本书的大纲结构主要借鉴传智播客C/C++学院所用的课程体系,也参考了市面上多本Linux教材,力求在构造完整知识体系的基础上能够系统、全面且精准。

本书附有配套视频、源代码、习题、教学课件等资源。同时,为了帮助初学者及时地解决学习过程中遇到的问题,黑马程序员还专门提供了免费的在线答疑平台。

本书可作为高等院校本专科计算机相关专业的Linux课程教材。

前言

随着互联网的发展,计算机新技术如雨后春笋,层出不穷,这也促使越来越多的学子投入到计算机的学习与研发中;而二十多年来,Linux操作系统已逐渐被越来越多的人接受和认可,并被众多企业广泛应用到服务器以及嵌入式开发等领域。因此,Linux操作系统的使用以及基于Linux的应用开发成为计算机专业学子应掌握的必备技能。

然而,黑马程序员在近些年的观察和研究中发现: 面临就业的高校学子虽已经学习了编程语言与操作系统等的相关课程,但缺乏动手能力,难以将理论联系到实际。这皆因他们所用教材不是体系结构不够系统,就是知识不够全面,再加上讲解的知识较深奥,以至于学子难以掌握切实可用的实质。

针对这种现象,黑马程序员决定推出一本更符合学生实际需求的教材。为保障学生在学习的过程中能学有所得,在学习之后能学以致用,黑马程序员经过大量调研与长期编写,推出了本书,作为Linux课程的初级教材。

为什么要学习本书

Linux操作系统自诞生至今逐步发展并日渐完善,因其开源、安全、稳定等特性,成为众多企业与政府部门搭建服务器的首选平台。此外,Linux在移动应用与嵌入式开发领域也被广泛采用,因此掌握Linux系统的使用与Linux平台下的程序开发方法成为众多计算机从业人员需要掌握的必备技能。

本书在大纲制定上参照了传智播客C/C++学院数年来结合计算机发展趋势及企业需求所研发课程体系中的Linux系统编程部分,涵盖了Linux基本操作、常用工具、系统管理与网络编程等使用Linux系统以及在Linux环境下进行开发所需的必要知识;在内容安排上,由Linux环境搭建入手,逐步讲解了Linux的基本操作、常用工具、系统管理以及程序开发等知识,由浅入深,由易到难,循序渐进;在讲解方式上,将理论与实践相结合,为大多知识点都配备相应案例,保障读者能在掌握理论知识的同时强化动手能力。

如何使用本书

本书以与企业中所用环境(Red Hat Enterprise Linux)较为接近的Linux版本(CentOS 6.8)为开发环境,主要介绍Linux系统的使用与Linux环境下的程序开发。本书中涉及的命令、语法与系统调用都配备了具体的案例,旨在让读者了解Linux平台下的常用服务器Linux编程基础模型。

若本书用于课堂教学,建议教师在讲解理论知识后,先引导学生自主动手实现教材中提供的案例,培养学生思考问题、分析问题、解决问题的能力,以期学生可更深刻地理解、掌握相应知识。

若读者为自主学习者,建议您勤思考、勤练习、勤总结,尽量完成并熟练掌握教材中配备的案例,并通过章节配套测试题进行自我检测和查漏补缺。若您在学习的过程中遇到困难或者有疑惑,可向问答精灵咨询。

本教材共分11章,每章的大体内容如下。

 第1章首先介绍Linux系统的背景,包括Linux的起源、发展、应用领域、常用版本,以及GNU项目计划和POSIX版本;之后介绍Linux环境搭建过程;最后介绍VMware虚拟网络配置、Linux的远程终端访问和远程文件管理。通过本章的学习,读者可对Linux系统的背景有所了解,并能顺利搭建Linux环境,掌握Linux的远程终端访问方式及远程文件的管理。

 第2章讲解Linux系统中的基本命令与开发工具,其中基本命令部分介绍与文件、网络、通信、压缩解压及帮助相关的命令,开发工具部分介绍vi编辑器、GCC编译器与GDB调试工具。掌握本章所讲的知识,可提高Linux系统使用与Linux环境开发的效率。

 第3章讲解Linux系统中与用户、用户组管理相关的知识。Linux是一个支持多用户的操作系统,通过本章的学习,读者应能掌握Linux系统中管理用户、用户组的命令,以及用户切换的方法。

 第4章讲解Linux的内核——Shell的相关知识、Shell应用技巧以及Shell脚本编程的相关语法。其中Shell编程语法包括Shell变量、条件语句、循环语句、函数,4.6节还给出了Shell脚本的调试方法。

 第5章讲解磁盘与目录、Linux文件系统、Linux文件类型与文件操作,其中重点为磁盘的逻辑分区方式、文件系统的结构、文件操作。通过本章的学习,读者应掌握以上重点知识,并熟悉磁盘分区、挂载、卸载的方式与创建文件系统的方法。

 第6章讲解Linux进程管理相关的知识,包括进程处理机制、进程属性、进程控制以及进程管理命令。通过本章的学习,读者应熟练掌握进程的处理机制,以及控制进程的方法,包括创建进程、退出进程与进程同步等。

 第7章讲解Linux系统中的信号机制,包括信号来源、产生方式、信号阻塞、信号捕获和时序竞态等知识。通过本章的学习,读者应能在终端与程序中使用信号管理和控制进程。

 第8章讲解进程间通信的方式,包括管道通信、消息队列通信、信号量通信与共享内存通信。通过本章的学习,读者应熟悉Linux系统中进程通信的这几种机制,并能在程序中使用这些机制实现进程通信。

 第9章主要讲解Linux系统中的线程,包括线程的定义、线程相关操作、线程的属性,以及实现线程同步的机制。线程操作包括创建线程、退出线程、终止线程、挂起线程和线程分离,通过设置线程的属性亦可实现其中的部分操作。线程同步可通过互斥锁、条件变量、信号量实现。学习本章之后,读者应能在Linux环境开发中熟练操作线程、掌握线程同步机制,并熟悉线程的属性、可通过线程属性设置线程的状态。

 第10章主要讲解socket编程,即Linux系统中的网络编程。其中首先简述计算机网络的协议与体系结构,之后讲解了socket编程中用到的系统调用、基于TCP和UDP两种协议的通信流程并补充网络编程中所需的知识,通过实际案例展示了不同协议下基于C/S模型的通信方式,最后对socket本地通信作了简单介绍。

 第11章对Linux系统中涉及的几种并发服务器模型作了讲解,包括多进程并发服务器、多线程并发服务器、I/O多路转接服务器、线程池,最后对epoll的工作模式进行了补充。通过本章的学习,读者应对Linux系统中的服务器有所了解。

读者若不能完全理解教材中所讲知识,可登录高校学习平台,配合平台中的教学视频进行学习。此外读者在学习的过程中,务必要勤于练习,确保真正掌握所学知识。若在学习的过程中遇到无法解决的困难,建议读者莫要纠结于此,继续往后学习,或可豁然开朗。

致谢

本教材的编写和整理工作由传智播客教育科技股份有限公司完成,主要参与人员有吕春林、高美云、薛蒙蒙、郑瑶瑶、韩冬、王晓娟、刘传梅、朱景尧、王保明、刘宗伟等。全体人员在这近一年的编写过程中付出了很多辛勤的汗水。

意见反馈

尽管我们尽了最大的努力,但教材中难免会有不妥之处,欢迎各界专家和读者朋友们来信来函给予宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不认同之处,可以通过电子邮件与我们取得联系。

请发送电子邮件至: itcast_book@vip.sina.com。

黑马程序员

2017年6月于北京

目录

第1章初识Linux1

1.1Linux概述1

1.1.1Linux的起源与发展1

1.1.2Linux的特点2

1.1.3GNU项目计划4

1.2安装Linux5

1.2.1前期准备5

1.2.2安装CentOS7

1.3网络配置11

1.4远程终端访问18

1.5本章小结22

1.6本章习题22

第2章命令与开发工具24

2.1Linux常用命令24

2.1.1命令格式24

2.1.2文件操作命令25

2.1.3网络管理与通信命令36

2.1.4压缩解压命令38

2.1.5帮助命令39

2.2Linux常用开发工具41

2.2.1vi编辑器41

2.2.2GCC编译器45

2.2.3GDB调试工具48

2.3本章小结52

2.4本章习题52

第3章用户与用户组管理54

3.1概述54

3.2用户和用户组管理55Linux编程基础3.2.1用户管理55

3.2.2用户组管理59

3.3用户切换61

3.3.1su61

3.3.2sudo62

3.4本章小结65

3.5本章习题65

第4章Shell编程68

4.1Shell概述68

4.1.1Shell的分类68

4.1.2Shell的功能69

4.1.3Shell命令执行流程69

4.2Shell应用技巧70

4.3Shell编程74

4.3.1第一个Shell程序74

4.3.2Shell中的变量75

4.4Shell中的条件语句81

4.4.1条件判断81

4.4.2if条件语句83

4.4.3select语句85

4.4.4case语句85

4.5Shell中的循环语句87

4.5.1for循环87

4.5.2while循环88

4.5.3until循环88

4.6Shell脚本调试89

4.7Shell中的函数90

4.8本章小结93

4.9本章习题93

第5章Linux文件系统与操作96

5.1磁盘与96

5.1.1磁盘与磁盘分区96

5.1.2结构99

5.1.3inode与dentry100

5.2Linux文件系统101

5.2.1Linux文件系统版本101

5.2.2fdisk/mke2fs102

5.2.3ext2/ext3文件系统105

5.2.4虚拟文件系统109

5.2.5挂载110

5.3Linux文件类型112

5.3.1文件类型概述112

5.3.2链接文件113

5.3.3设备文件114

5.4文件操作115

5.4.1文件描述符115

5.4.2文件I/O116

5.4.3文件操作121

5.5本章小结123

5.6本章习题123

第6章Linux进程管理125

6.1进程概述125

6.1.1进程处理机制125

6.1.2进程属性126

6.2进程控制129

6.2.1创建进程129

6.2.2exec函数族135

6.2.3进程退出138

6.2.4进程同步138

6.3进程管理命令144

6.4本章小结150

6.5本章习题150

第7章信号153

7.1信号及信号来源153

7.2信号的产生156

7.2.1系统调用156

7.2.2软件条件158

7.2.3kill命令160

7.3信号阻塞161

7.4信号捕获164

7.5时序竞态168

7.6SIGCHLD信号170

7.7本章小结173

7.8本章习题174

第8章进程间通信176

8.1管道176

8.1.1匿名管道177

8.1.2popen()/pclose()181

8.1.3命名管道182

8.2消息队列185

8.3信号量190

8.4共享内存195

8.5本章小结201

8.6本章习题201

第9章线程203

9.1线程概述203

9.2线程操作205

9.2.1创建线程205

9.2.2线程退出207

9.2.3线程终止209

9.2.4线程挂起210

9.2.5线程分离213

9.3线程属性215

9.4线程同步220

9.4.1互斥锁221

9.4.2条件变量225

9.4.3信号量229

9.5本章小结232

9.6本章习题232

第10章socket编程235

10.1计算机网络概述235

10.1.1协议与体系结构235

10.1.2网络结构模式239

10.2socket编程基础239

10.2.1socket编程接口240

10.2.2socket通信流程244

10.2.3网络编程相关知识245

10.3socket网络编程实例247

10.3.1基于TCP的网络通信247

10.3.2基于UDP的网络通信249

10.4socket本地通信251

10.5本章小结259

10.6本章习题259

第11章高并发服务器261

11.1多进程并发服务器261

11.2多线程并发服务器265

11.3I/O多路转接服务器268

11.3.1select268

11.3.2poll273

11.3.3epoll277

11.4epoll的工作模式283

11.5本章小结286

11.6本章习题287

作者简介

编辑推荐

本书是为了解决计算机编程类院系所授Linux课程与企业实际需求的差异,针对大学本科计算机相关专业推出的、适用于Linux课程学习的教材。主要讲解了Linux系统使用和管理中常用的命令与开发工具、Shell编程相关的变量与语法、Linux文件系统的结构、内核模块相关的进程、信号、线程、网络编程以及常见的服务器模型等内容。

特色一:实战性强

传智播客集合IT业一线技术人员和优秀讲师打造作者团队,深入研究当今企业对Linux从业人员的实际需求,从需求出发制定本书大纲,由浅入深地讲解基础开发人员所须具备的各种知识。

特色二:学用结合

在讲解知识点的过程中采用理论与实例相结合的模式,为每个必要知识点配备相应案例,确保读者能学有所得、学以致用。  

特色二:配套资源丰富

本书附有配套视频、源代码、习题、教学课件等资源。同时,为了帮助初学者及时地解决学习过程中遇到的问题,黑马程序员还专门提供了免费的在线答疑平台。

作者寄语

电子资料

www.luweidong.cn

下一个