《Linux系统程序设计教程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:王凯主编;杨光,窦乔,孙斌等副主编
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2019
  • ISBN:9787121358555
  • 页数:279 页
图书介绍:本书基于Linux内核,以RedHat Linux平台为例,介绍Linux系统程序设计的基础知识,为准备学习Linux系统程序开发的初学者提供方便快捷的途径。全书共12章。第1章介绍Linux操作系统的基本使用方法;第2章介绍Linux平台下进行C语言开发需要的各种工具;第3章介绍Linux平台下常用的编程基础知识;第4~6章介绍文件、文件属性、目录文件相关的编程理论和方法;第7~8章介绍进程和线程的编程方法;第9~11章介绍信号、管道、信号量、共享内存、消息队列、套接字这6种进程间通信方式;第12章介绍两个贯穿本书大多数知识点的综合案例。

第1章 Linux基础 1

1.1 UNIX/Linux简介 1

1.1.1 UNIX简介 1

1.1.2 UNIX体系结构 2

1.1.3 Linux简介 2

1.1.4 Linux版本说明 3

1.1.5 Linux特点 4

1.2库函数与系统调用 5

1.3 Linux常用命令 6

1.3.1用户和用户组命令 6

1.3.2文件和目录命令 8

1.3.3进程命令 10

1.3.4获取帮助信息 11

1.4案例1:通过SSH终端登录Linux系统 13

1.4.1分析与设计 13

1.4.2实施 13

1.4.3运行 15

习题 17

第2章 Linux系统开发环境 18

2.1 Vi编辑 器 18

2.1.1 Vi编辑 器的工作模式 18

2.1.2 Vi编辑 器的基本用法 19

2.1.3 Vi编辑 器的高级用法 20

2.2 GCC编译器 21

2.2.1 GCC编译器介绍 21

2.2.2 GCC编译器基本用法 22

2.3 Makefile文件的使用 25

2.3.1 Makefile文件 25

2.3.2 Makefile文件的命名 26

2.3.3 Makefile文件的调用 26

2.3.4 Makefile文件的内容 26

2.3.5 make命令的特殊用法 30

2.4 GDB调试器 30

2.4.1输出调试 30

2.4.2 GDB调试器 31

2.5库 33

2.5.1库相关概念 34

2.5.2静态库和共享库 35

2.6案例2:简易学生成绩计算 36

2.6.1分析与设计 36

2.6.2实施 38

2.6.3编译与运行 39

习题 40

第3章 Linux程序设计初步 41

3.1程序及进程的存储结构 41

3.2变量的类型修饰符 42

3.3命令行参数及获取 44

3.3.1命令行参数 44

3.3.2 getopt获取命令行参数 46

3.4环境变量 49

3.4.1 Shell变量 49

3.4.2环境变量的相关命令 49

3.4.3环境变量函数 51

3.5时间管理 52

3.6错误代码 55

3.7标准I/O与文件I/O 58

3.8案例3:设置环境变量 60

3.8.1分析与设计 60

3.8.2实施 61

3.8.3编译与运行 61

习题 62

第4章 文件I/O 63

4.1文件系统简介 63

4.1.1 UNIX/Linux文件系统概述 64

4.1.2虚拟文件系统(VFS) 65

4.1.3索引节点(inode) 65

4.1.4文件的类型 66

4.1.5文件的访问权限 68

4.2访问文件的内核数据结构 70

4.3文件基本I/O操作 71

4.3.1打开/创建文件 71

4.3.2读文件 75

4.3.3写文件 76

4.3.4文件定位 77

4.3.5关闭文件 79

4.3.6文件操作举例 79

4.4文件访问的同步 81

4.5案例4:文件复制命令的实现 82

4.5.1分析与设计 82

4.5.2实施 83

4.5.3编译与运行 84

习题 85

第5章 文件属性 87

5.1获取文件属性 87

5.2用户/组ID与名字的转换 89

5.2.1用户和组 89

5.2.2获取文件的用户和组的信息 90

5.3硬链接与符号链接 91

5.3.1硬链接与符号链接的区别 92

5.3.2相关的系统调用 92

5.4 dup/dup2 93

5.4.1输入/输出重定向 93

5.4.2系统调用dup/dup2 94

5.5文件属性的修改 96

5.5.1修改文件属性 96

5.5.2改变文件所有者及所属组chown/fchown/lchown 97

5.5.3改变文件访问权限chmod/fchmod 98

5.5.4改变文件时间utime 99

5.5.5改变文件长度truncate/ftruncate 99

5.6案例5:显示文件长格式信息 99

5.6.1分析与设计 99

5.6.2实施 100

5.6.3编译与运行 103

习题 104

第6章 目录文件管理 106

6.1目录基本操作 106

6.1.1打开目录 106

6.1.2读目录 107

6.1.3关闭目录 107

6.2目录其他操作 108

6.2.1切换当前目录 108

6.2.2创建目录 109

6.2.3删除目录 110

6.2.4目录指针定位 110

6.3案例6:显示指定目录下文件列表 111

6.3.1分析与设计 111

6.3.2实施 111

6.3.3编译与运行 115

习题 117

第7章 进程控制 118

7.1进程基本概念 118

7.1.1进程和进程控制块 118

7.1.2进程标识 119

7.1.3用户标识 119

7.2进程控制 122

7.2.1创建进程 122

7.2.2 exec*系列函数 129

7.2.3进程终止 132

7.2.4等待进程结束 133

7.2.5 system函数 139

7.3什么是Shell 141

7.3.1用户登录Shell 141

7.3.2 Shell执行命令 142

7.4案例7:实现简单的Shell 142

7.4.1分析与设计 142

7.4.2实施 143

7.4.3编译与运行 145

习题 145

第8章 线程 146

8.1线程概念 146

8.2线程基本操作 147

8.3线程间通信 151

8.4案例8:线程实例 155

8.4.1分析与设计 155

8.4.2实施 155

8.4.3编译与运行 157

习题 159

第9章 信号与管道 161

9.1信号 161

9.1.1信号的概念 161

9.1.2信号的产生 161

9.1.3信号的响应方式 167

9.1.4 sleep函数和pause系统调用 169

9.1.5信号集 171

9.2管道 179

9.2.1管道基本概念 179

9.2.2 FIFO 185

习题 187

第10章 进程间通信 188

10.1 System VIPC简介 188

10.2 System V信号量 190

10.3 System V共享内存 195

10.4 System V消息队列 199

习题 205

第11章 网络编程 206

11.1网络编程基本概念 206

11.1.1常用网络相关命令和配置文件 206

11.1.2软件体系结构 209

11.1.3网络协议及OSI参考模型 211

11.1.4 IP地址和端口 213

11.1.5字节顺序 216

11.1.6网络数据传输方式 218

11.2套接字编程基础 219

11.2.1套接字简介 219

11.2.2套接字地址结构 220

11.2.3面向连接套接字通信过程 221

11.2.4面向无连接套接字通信过程 222

11.3套接字编程相关系统调用 223

11.3.1系统调用socket 223

11.3.2系统调用bind 224

11.3.3系统调用listen 225

11.3.4系统调用accept 225

11.3.5系统调用coconnect 226

11.3.6系统调用send 226

11.3.7系统调用sendto 227

11.3.8系统调用recv 228

11.3.9系统调用recvfrom 228

11.3.10系统调用close 229

11.3.11系统调用shutdown 229

11.4案例9:基于网络的进程间通信 230

11.4.1分析与设计 230

11.4.2实施 231

11.4.3编译与运行 233

11.5基于UDP的网络编程 237

11.6域名解析 240

11.6.1域名解析 240

11.6.2 IP地址形式转换 242

11.6.3 IP地址与主机名 244

习题 248

第12章 综合案例 249

12.1 Linux网络传输系统 249

12.1.1构思 249

12.1.2设计 249

12.1.3实施 250

12.1.4运行 256

12.2简易的文件传输系统 257

12.2.1构思 257

12.2.2设计 257

12.2.3实施 258

12.2.4运行 269

习题 270

附录A Linux主要的系统调用 271

附录B ASCII码 276

参考文献 278