《UNIX系统与软件开发》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:邵国金主编;耿永军,张俊峰副主编
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2013
  • ISBN:9787113168988
  • 页数:478 页
图书介绍:UNIX/Linuxt系统可被分为4部分:基本操作、系统管理、网络服务及应用和软件开发。本书主要包括其中的3部分(或3篇):基本操作、系统管理和软件开发,分为19章。本书内容包括:基础篇:入门知识,shell与shell命令;管理篇:用户、组和密码管理;文件系统及管理;进程与作业管理;系统安装、启动及管理;软硬件管理及系统的扩充与升级;网络管理与网络应用。开发篇:bshell编程;C编程基础和方法;文件部分系统调用与标准I/O;进程环境;文件属性与目录编程;进程关系与进程控制;进程间通讯;线程编程基础;终端与curses库编程;数据库的使用及编程;网络编程。

基 础篇 1

第1章 入门知识 1

1.1 UNIX系统简介 1

1.1.1 UNIX系统的产生及演变 1

1.1.2 UNIX系统的特点 3

1.2所用系统简介 5

1.2.1 Linux和 Fedora 5

1.2.2 BSD与FreeBSD 5

1.2.3 Sun OS和Solaris 6

1.3系统的开关机 7

1.3.1系统的开启与用户登录 7

1.3.2用户的注销 9

1.3.3系统关闭与重启动 9

1.4在线帮助 12

1.4.1 man手册 12

1.4.2 info 13

习题 14

第2章shell与shell命令 15

2.1 shell基本功能与基本概念 15

2.1.1 shell基本功能 15

2.1.2字符与保留字 16

2.1.3文件命名及文件类型 18

2.1.4目录结构与路径 19

2.1.5 shell命令解释及执行 21

2.1.6命令行编辑特性 21

2.1.7环境变量与变量 22

2.1.8标准流与输入输出重定向 23

2.1.9管道 25

2.1.10引号机制、命令替换与参数替换 25

2.1.11 shell种类 26

2.1.12 shell命令的返回值 27

2.2基本操作命令 27

2.2.1目录基本操作命令 27

2.2.2文件操作基本命令 29

2.2.3文本文件内容处理与编辑基本命令 33

2.2.4进程管理基本命令 42

2.2.5时间管理命令 43

2.2.6文件或目录比较命令 45

2.2.7其他操作命令 47

2.3 shell的启动 51

2.3.1 shell的启动流程和工作过程 51

2.3.2用户登录控制与shell定制 52

习题 52

管 理篇 53

第3章 用户管理和密码管理 53

3.1 UNIX系统的用户和组 53

3.1.1用户与uid 53

3.1.2用户组 53

3.2与用户、组和密码管理相关的文件 53

3.2.1 /etc/passwd 53

3.2.2 /etc/shadow 54

3.2.3 /etc/group 54

3.2.4 skel 55

3.2.5其他文件 55

3.2.6 FreeBSD 9的/etc/masterpasswd文件 55

3.3用户管理命令 56

3.3.1 Fedora和Solaris的用户管理命令 56

3.3.2 FreeBSD 9的用户管理命令 57

3.3.3更改用户的登录shell 58

3.4组管理命令 58

3.4.1 Fedora和Solaris的组管理命令 58

3.4.2 FreeBSD 9的组管理 59

3.5密码管理 59

3.5.1综述 59

3.5.2密码管理命令(passwd) 60

3.5.3用户上锁与解锁 60

3.6与用户身份和位置相关的其他命令 61

3.6.1显示与用户和组相关的信息(id) 61

3.6.2显示已登录用户的信息(who)及本用户名信息(whoami) 61

3.6.3终端接收信息控制(mesg) 62

3.6.4向系统中已登录的所用户发信息(wall) 62

3.6.5显示用户所使用的终端设备(tty) 62

3.6.6不退出系统而将自己切换成其他用户或以其他用户身份工作(su) 63

3.6.7以其他用户身份执行程序(sudo) 64

3.6.8改变进程的根目录(chroot) 66

习题 67

第4章 文件系统及管理 68

4.1硬盘存储结构与分区划分 68

4.2 UNIX文件系统内部结构 71

4.2.1 UNIX文件系统的特点 71

4.2.2 UNIX文件系统的结构 71

4.3文件系统权限及表示 73

4.3.1三类人 73

4.3.2三种权限 73

4.3.3权限表示 74

4.3.4文件默认权限与umask 74

4.4权限管理命令 75

4.4.1 umask 75

4.4.2 chmod 75

4.4.3 chown 76

4.4.4 chgrp 76

4.4.5 ext2+文件系统的新增属性及其管理 76

4.5文件系统管理及使用 77

4.5.1 UNIX/Linux支持的文件系统 77

4.5.2 UNIX/Linux系统使用的存储设备 79

4.5.3文件系统创建 81

4.5.4文件系统的使用 90

4.5.5文件系统的检查、修复与同步 94

4.6.与文件系统管理相关的其他命令 96

4.6.1文件查找命令(find) 96

4.6.2文件复制命令(dd) 98

4.6.3创建文件连接(In) 98

4.6.4特别文件创建(mknod/mkfifo) 99

4.6.5统计磁盘空间和文件系统的使用情况(df) 99

4.6.6统计目录使用磁盘空间情况(du) 100

4.7数据备份与压缩 100

4.7.1数据备份的任务 100

4.7.2文件的压缩与解压缩 101

4.7.3磁盘文件归档管理命令(tar) 103

4.7.4文件系统备份与复制命令(cpio) 105

习题 107

第5章 进程与作业管理 108

5.1程序和进程的概念 108

5.1.1程序、进程、作业和任务 108

5.1.2三类进程 108

5.1.3系统的启动与进程树的形成 109

5.1.4 0#进程与1#进程 109

5.1.5进程状态及转换 110

5.2 UNIX/Linux的进程调度与信号 110

5.2.1调度策略与优先级的计算 111

5.2.2信号与软中断 111

5.3 setuid、 setgid和sticky属性 112

5.3.1 suid和sgid属性 113

5.3.2 sticky属性 114

5.4进程管理与调度命令 114

5.4.1进程或作业的挂起及前/后运行切换(fg/bg/jobs) 114

5.4.2查询进程状态(ps) 115

5.4.3按名称终止进程或所有进程(killall) 116

5.4.4进程查找(pgrep) 117

5.4.5查找进程并向它们发信号(pkill) 118

5.4.6确定使用指定文件或文件系统的进程(fuser) 118

5.4.7让进程抗信号HUP运行(nohup) 119

5.4.8设置程序运行的优先级(nice) 119

5.4.9改变进程的优先级(renice) 120

5.5作业和任务调度 120

5.5.1 at和batch 120

5.5.2 crontab 122

习题 124

第6章 系统安装、启动与管理 125

6.1系统安装 125

6.1.1安装任务与准备 125

6.1.2系统安装和运行所需的基本分区 126

6.1.3安装过程 128

6.1.4虚拟机的安装与使用 128

6.2引导器 128

6.2.1 Linux和Solaris的GRUB引导器 128

6.2.2 GRUB常用术语 129

6.2.3操作界面 129

6.2.4 GRUB 1及其配置 130

6.2.5 GRUB2及其配置 133

6.2.6系统的启动及启动参数修改 136

6.2.7 FreeBSD 9的启动 137

6.3系统的启动过程分析 138

6.3.1 Linux系统的启动过程分析 138

6.3.2 Solaris 11系统的启动过程分析 142

6.3.3 FreeBSD 9系统的启动过程分析 142

6.4服务管理 144

6.4.1 Linux系统的服务管理 144

6.4.2 Fedor 15+ Linux的服务管理 145

6.4.3 Solaris 11的服务管理 150

6.4.4 FreeBSD 9的服务管理 153

6.4.5超级服务器(inetd/xinetd) 154

6.5日志管理 156

6.5.1日志配置文件 156

6.5.2常见日志文件 156

6.5.3文本型日志 157

6.5.4非文本型日志 157

6.5.5内核启动日志 158

6.5.6日志滚动 158

6.6系统管理 158

6.6.1系统管理的任务 158

6.6.2系统管理工具与命令 159

6.6.3内核参数调整 161

习题 162

第7章 软硬件管理及系统的扩充与升级 163

7.1软件包管理 163

7.1.1 UNIX的传统软件包管理 163

7.1.2 Red Hat Linux和Fedora的软件包管理 163

7.1.3 FreeBSD 9的软件包管理 166

7.1.4 Solaris 11的软件包管理 168

7.2系统的升级 173

7.2.1软件包源及升级设置 173

7.2.2软件包管理图形界面 173

7.2.3系统升级 174

7.3硬件管理概述及常见设备 174

7.3.1硬件管理概述 174

7.3.2 Fedora系统说明 175

7.3.3 FreeBSD 9说明 175

7.3.4 Solaris 11说明 176

7.4打印机的管理与使用 176

7.4.1 CUPS软件包安装与服务管理 176

7.4.2 CUPS打印机浏览器管理 178

7.4.3 CUPS打印机的命令界面管理与使用 180

7.4.4打印机使用示例 183

7.5交换区管理 184

7.5.1 Fedora的交换区管理 184

7.5.2 FreeBSD 9的交换设备管理 185

7.5.3 Solaris 11的交换设备管理 186

7.6串口与终端管理 188

7.6.1综述 188

7.6.2串口管理 188

7.6.3 stty与终端设置 188

7.6.4终端类型与能力 190

习题 193

第8章 网络管理与网络应用 194

8.1 TCP/IP概述 194

8.1.1 TCP/IP协议体系结构 194

8.1.2 IP地址 194

8.1.3网络掩码 196

8.1.4端口及服务 196

8.1.5物理地址、逻辑地址和主机名 196

8.2与网络有关的配置文件 197

8.2.1 /etc/hosts 197

8.2.2 /etc/services 198

8.2.3 /etc/resolv.conf 198

8.2.4 /etc/networks 199

8.3 TCP/IP配置 199

8.3.1 TCP/IP网络配置参数与配置方式 199

8.3.2一个通用的TCP/IP网络工具(ifconfig) 199

8.3.3 Fedora 16的网络配置 200

8.3.4 Solaris 11的网络配置 203

8.3.5 FreeBSD 9的网络配置 208

8.4网络管理通用命令 210

8.4.1 ping 210

8.4.2 netstat 211

8.4.3 arp 213

8.4.4 hostname 213

8.4.5 route 214

8.4.6 traceroute 215

8.5网络应用常用命令介绍 216

8.5.1 telnet与ssh 216

8.5.2 ftp 217

8.5.3 mail/mailx 219

8.5.4 nslookup和host 221

8.5.5 finger 221

8.5.6 write 222

8.5.7 talk 222

8.5.8 r-命令 222

8.6常用的网络服务 223

8.6.1 telnet服务器 223

8.6.2 ssh服务器 223

8.6.3 ftp服务器 223

习题 225

编程基础篇 226

第9章bshell编程 226

9.1正则表达式简介 226

9.1.1字符集 226

9.1.2 bshell的模式表达式 229

9.2流编辑(sed) 229

9.2.1功能及用法 229

9.2.2 sed的命令 230

9.2.3 sed示例 231

9.3模式搜索与处理(awk) 232

9.3.1功能及用法 232

9.3.2记录和域 232

9.3.3变量 232

9.3.4操作符 233

9.3.5控制语句 233

9.3.6函数 234

9.3.7 awk程序及执行 235

9.3.8 awk使用示例 235

9.4 Bourne shell及其编程 237

9.4.1特殊字符 237

9.4.2 I/O重定向 237

9.4.3变量与参数 239

9.4.4 shell的状态 240

9.4.5 shell的调用与变量传递 241

9.4.6 shell程序设计 242

9.4.7命令行参数与选项的处理 251

9.4.8 shell脚本程序格式及注意事项 253

9.4.9 shell程序调试 255

9.5 bash简介 255

9.5.1 bash的特色 255

9.5.2 bash部分特点介绍 255

习题 258

第10章C编程基础和方法 259

10.1基本知识 259

10.1.1头文件 259

10.1.2库文件 259

10.1.3系统调用和库函数 260

10.1.4基本数据类型 260

10.1.5错误处理 261

10.2编译器 262

10.2.1 gcc/g++++用法 262

10.2.2 gcc/g++++的工作过程 263

10.2.3 C/C++++程序编译示例 264

10.3静态库及管理 265

10.3.1一个多模块工程示例 265

10.3.2管理静态库 265

10.4共享库的管理 267

10.4.1共享库的搜索及控制 267

10.4.2共享库的配置与查询 267

10.4.3共享库的构建与安装 267

10.4.4共享库的使用 268

10.4.5共享库的使用示例 268

10.5 make与makefile 269

10.5.1 make命令的用法简介 270

10.5.2 makefile文件 270

10.5.3 makefile示例 271

10.6调试器gdb 273

10.6.1 gdb功能 273

10.6.2 gdb的基本内部命令 273

10.6.3程序调试示例 273

10.7其他编程工具简介 274

10.7.1常用库与GNOME/GTK 274

10.7.2 Kdevelop/Qt开发 274

10.7.3 Java开发 275

10.7.4 Perl开发 275

10.7.5数据库开发 276

10.7.6 PHP开发 276

习题 276

开 发篇 277

第11章 文件部分系统调用与标准I/O 277

11.1文件部分系统调用 277

11.1.1文件打开与关闭 277

11.1.2文件的读/写 279

11.1.3简单I/O示例 279

11.1.4文件指针及移动 281

11.1.5文件的共享 283

11.1.6文件的互斥与锁 285

11.1.7 fcntl 286

11.1.8 ioctl 287

11.1.9原子操作 287

11.1.10文件低级I/O示例 287

11.2标准I/O 290

11.2.1流和文件对象 290

11.2.2流的打开与关闭 290

11.2.3标准I/O的缓冲区类型及更改 291

11.2.4格式化I/O 292

11.2.5字符I/O 294

11.2.6行I/O 294

11.2.7二进制I/O 295

11.2.8流定位 295

11.2.9错误判断及清除 296

11.2.10获得文件描述符 296

11.3 FILE对象与文件整数描述符 296

11.3.1 FILE对象与文件整数描述符的关系 296

11.3.2将文件作为标准I/O 297

11.4临时文件 297

11.4.1临时文件的命名规则 297

11.4.2临时文件的使用 297

11.4.3临时文件示例 298

习题 300

第12章UNIX系统进程环境 301

12.1命令行参数 301

12.1.1 C程序的入口:main() 301

12.1.2命令参数处理:getopt() 302

12.1.3命令行参数处理示例 302

12.2环境变量 304

12.2.1环境变量表 304

12.2.2环境变量的访问及设置 304

12.3进程的终止 306

12.3.1 exit和_exit 306

12.3.2 atexit 306

12.4主机信息 307

12.4.1获得系统信息(uname) 307

12.4.2获得或设置主机名 308

12.5用户标识信息 308

12.5.1根据用户标识或用户名获取passwd信息 308

12.5.2搜索passwd文件 309

12.5.3根据组标识或组名获取组信息 309

12.5.4搜索group文件 309

12.5.5用户信息获取示例 310

12.6用户进程标识信息 311

12.6.1获得进程标识信息(getpid和getppid) 311

12.6.2获得用户标识信息(getuid和geteuid) 311

12.6.3获得组标识信息(getgid和getegid) 311

12.6.4用户进程标识信息示例 311

12.7时间和日期信息 312

12.7.1获取系统时间 312

12.7.2显示与转换时间格式 312

12.7.3设置时间 314

12.8日志信息 314

12.8.1日志记录 314

12.8.2日志操作示例 315

习题 315

第13章 文件属性与目录编程 317

13.1文件属性 317

13.1.1文件属性查询(stat、 fstat和lstat) 317

13.1.2文件权限管理(access、 umask、chmod和fchmod) 319

13.2文件链接 321

13.2.1创建硬链接link() 321

13.2.2创建符号链接symlink() 321

13.2.3读取符号链接的内容readlink() 321

13.2.4文件链接示例 321

13.3文件删除 322

13.3.1删除文件unlink() 322

13.3.2删除文件或空目录remove() 323

13.3.3文件删除示例 323

13.4文件主、组管理 323

13.5文件长度及截取 325

13.5.1文件长度 325

13.5.2文件的截取 325

13.6更改文件的时间属性 325

13.6.1 utime() 325

13.6.2 utimes() 326

13.6.3文件长度与时间示例 326

13.7文件的更名与移动 328

13.8目录编程 328

13.8.1获得当前工作目录(getcwd和getwd) 328

13.8.2目录的改变(chdir和fchdir) 328

13.8.3目录的创建(mkdir) 329

13.8.4目录的删除(rmdir) 329

13.8.5目录的其他操作 329

13.8.6目录操作综合示例 330

习题 333

第14章 进程关系与进程控制 334

14.1进程的创建与程序的执行 334

14.1.1进程创建系统调用(fork和vfork) 334

14.1.2 exec()系列函数 336

14.1.3 shell程序的执行及示例 337

14.1.4 system() 339

14.1.5更改用户的uid和gid 340

14.1.6 suid、 sgid与安全程序设计问题 340

14.2子进程退出与进程等待 341

14.2.1子进程退出与僵尸进程 342

14.2.2进程等待(wait和waitpid) 342

14.2.3孤儿进程 344

14.3信号编程 344

14.3.1信号 344

14.3.2信号通信(kill、 signal和raise) 345

14.3.3进程的睡眠、闹钟与非正常终止 347

14.3.4信号集 348

14.4用户登录、进程组与会话期 355

14.4.1进程组 355

14.4.2会话 355

14.4.3控制终端 356

14.4.4作业控制 356

14.5 chroot()编程 357

习题 358

第15章 进程间通信 359

15.1进程间通信简介 359

15.1.1管道 359

15.1.2 IPC 360

15.2管道编程 363

15.2.1匿名管道(PIPE) 363

15.2.2命名管道(FIFO) 366

15.2.3将管道用作标准I/O 369

15.2.4进程管道popen()和pclose() 370

15.3消息队列编程 371

15.3.1消息队列操作函数 371

15.3.2消息队列编程示例 373

15.4共享内存编程 375

15.4.1共享内存操作函数 375

15.4.2共享内存编程示例 376

15.5信号量集编程 378

15.5.1信号量集概述 378

15.5.2信号量的定义及操作 378

15.5.3 UNIX信号量操作函数 379

15.5.4信号量编程示例 380

习题 383

第16章 线程编程基础 384

16.1基本知识 384

16.1.1线程基础 384

16.1.2可重入函数与线程安全 385

16.2线程操作基本函数及简单示例 386

16.2.1线程操作基本函数 386

16.2.2线程操作简单示例 388

16.3线程属性 390

16.3.1线程的属性结构 390

16.3.2属性结构的初始化与清理 391

16.3.3线程属性及修改 391

16.4线程同步 392

16.4.1用信号量实现线程间同步 392

16.4.2使用互斥量实现线程间同步 395

16.4.3使用条件变量实现线程间同步 399

16.5线程参数与多线程并发服务器 402

16.5.1线程参数 402

16.5.2线程返回值 402

16.5.3并发服务器框架 402

习题 403

第17章 终端与curses库编程 404

17.1终端编程 404

17.1.1 temios结构与终端属性 404

17.1.2查询和改变终端设备属性 406

17.1.3波特率设置 408

17.1.4行控制函数 408

17.1.5规范模式 408

17.1.6非规范模式 408

17.1.7规范模式下的密码读取示例 409

17.2终端数据库访问编程 411

17.2.1相关函数 411

17.2.2终端类型设置与性能访问编程示例 412

17.3 curses库编程 414

17.3.1 curses简介 414

17.3.2 curses程序结构 414

17.3.3 curses库及应用 415

17.3.4窗口与子窗体 420

17.3.5键盘与功能键 421

习题 424

第18章 数据库的使用及编程 425

18.1 DBM数据库编程 425

18.1.1 DBM简介 425

18.1.2库函数 426

18.1.3 DBM使用示例 427

18.2 MySQL数据库的使用 432

18.2.1 MySQL的使用 432

18.2.2 MySQL的管理 437

18.3 MySQL数据库的编程 440

18.3.1开发包、头文件和库函数 440

18.3.2 MySQL C API数据类型 440

18.3.3 MySQL C API函数 441

18.3.4 MySQL C API编程示例 447

习题 450

第19章 网络编程 451

19.1网络通信基础 451

19.1.1守候进程及工作方式 451

19.1.2客户机/服务器(C/S)模型 452

19.1.3套接字及基本类型 453

19.1.4头文件及套接字地址结构 453

19.1.5与主机相关的数据结构及函数 454

19.1.6与服务器相关的数据结构及函数 454

19.1.7字节顺序及转换函数 455

19.1.8 IP地址及主机名转换常用函数 455

19.2 TCP编程 457

19.2.1 socket编程常 用函数 457

19.2.2 TCP C/S编程模型 460

19.2.3 TCP编程示例 461

19.2.4 TCP应用说明 465

19.3 UDP编程 466

19.3.1 UDP常用函数 466

19.3.2 UDP C/S通信模型 466

19.3.3 UDP示例程序 467

19.4 C/M/S结构及编程 473

19.4.1 C/M/S结构 473

19.4.2交易型中间件程序结构 473

19.5一个基于线程的并发服务器程序 474

习题 476

参考文献 478