第一部分 Unix编程基础 1
第1章Unix操作系统概述 1
1.1 Unix系统的历史 2
1.1.1 Unix的产生与发展 2
1.1.2 Unix的分支 2
小结 3
1.2 Unix操作系统的用户基础 4
1.2.1 操作系统 4
1.2.2 初次使用Unix操作系统 4
1.2.3 文件系统 6
1.2.4 程序和进程 8
1.2.5 Unix系统管理 10
小结 11
第2章Unix下的编程环境 12
2.1 vi的使用 13
2.1.1 概述 13
2.1.2 vi的命令 14
小结 16
2.2 编译器和调试工具 16
2.2.1 编译器 17
2.2.2 调试工具 19
小结 27
2.3 make工具及makefile规则 28
2.3.1 make程序概述 28
2.3.2 makefile内部规则 33
小结 34
第3章 shell简介及shell编程 35
3.1 shell概述 36
3.2 shell的标准输入/输出及重定向 37
3.2.1 shell的标准输入/输出 37
3.2.2 输入/输出重定向 37
3.2.3 管道线 39
3.3 进程控制 40
3.4 通配符、特殊字符和转义字符 41
3.5 shell程序脚本设计 43
3.5.1 shell程序脚本的基本结构 43
3.5.2 如何执行shell程序 43
3.5.3 shell变量 44
3.5.4 条件测试 46
3.5.5 控制流结构 50
3.5.6 shell函数 53
3.5.7 脚本的调试 53
小结 54
第4章 Unix下几种重要的工具 55
4.1 正则表达式 56
4.1.1 概述 56
4.1.2 正则表达式的使用 56
小结 60
4.2 模式搜索程序grep 61
4.2.1 怎样使用grep 61
4.2.2 行匹配 62
4.2.3 精确匹配 62
4.2.4 正则表达式匹配 63
小结 64
4.3 流编辑程序sed 64
4.3.1 怎样使用sed 64
4.3.2 怎样通过sed查询文本 65
4.3.3 怎样通过sed编辑文本 65
小结 69
4.4 非常实用的数据加工和检索工具awk 69
4.4.1 基本概念和基础操作 70
4.4.2 其他重要概念 72
4.4.3 应用于awk编程脚本的动作流程控制 75
4.4.4 与其他命令及shell一起使用awk 78
小结 78
第二部分 Unix下的C语言高级编程 79
第5章 Unix系统结构 79
5.1 Unix层次结构 80
5.2 Unix内核特点 81
5.3 系统调用和库函数 81
第6章 文件子系统 82
6.1 文件子系统的基本概念 83
6.1.1超级块 83
6.1.2 索引节点 84
6.1.3 文件的多重索引结构 85
6.1.4 目录文件 86
6.1.5 索引节点和磁盘分配与释放 87
小结 88
6.2 文件的基本操作 89
6.2.1 文件描述符 89
6.2.2 文件的创建和删除 89
6.2.3 文件的打开和关闭 94
6.2.4 文件的读/写操作 97
6.2.5 文件的随机存取 100
6.2.6 综合应用实例 102
小结 105
6.3 文件高级操作 105
6.3.1 文件的模式 106
6.3.2 文件控制 109
6.3.3 目录文件操作 122
6.3.4 文件信息查询 129
6.3.5 链接——Link和Symlink系统调用 133
6.3.6 综合应用实例 136
小结 141
6.4 设备文件操作 141
6.4.1 设备文件基础知识 141
6.4.2 两个系统调用——mknod和ioctl 143
6.4.3 终端设备操作 144
6.4.4 设备驱动程序的编写 152
6.4.5 硬、软盘设备操作 175
小结 180
第7章 进程控制 181
7.1 进程的基本概念 182
7.1.1 进程的结构 182
7.1.2 进程状态及其转换 184
7.1.3 系统调度简介 185
小结 186
7.2进程的控制 186
7.2.1进程的建立——fork系统调用 186
7.2.2 执行新程序——exec系统调用 188
7.2.3 进程的终止——exit系统调用 191
7.2.4 进程的同步——wait系统调用 192
7.2.5 悬挂进程——sleep系统调用 195
7.2.6进程控制的综合实例 195
小结 202
7.3 进程的高级操作 202
7.3.1 进程标识号管理 202
7.3.2 进程的用户标识号管理 204
7.3.3 进程的环境管理 205
小结 207
7.4 守护进程 207
7.4.1 守护进程及其特性 207
7.4.2 守护进程的编程规则 208
7.4.3 守护进程实例 210
7.4.4 守护进程的错误输出 211
小结 213
第8章 进程间的通信 214
8.1 IPC一瞥 215
8.2 信号 216
8.2.1 信号的基本知识 216
8.2.2 信号类型 218
8.2.3 内核对信号的处理 220
8.2.4 信号的基本操作 222
8.2.5 信号的其他操作 231
8.2.6 信号的阻塞 236
小结 240
8.3 管道和FIFO 240
8.3.1 管道 240
8.3.2 有名管道——FIFO 248
8.3.3 字符流的分隔 255
小结 256
8.4 System V消息队列 256
8.4.1 System V IPC 256
8.4.2 消息队列基本概念 258
8.4.3 操作消息队列的系统调用 260
8.4.4 迭代客户-服务器实例 265
8.4.5 并发客户-服务器实例 269
小结 272
8.5信号量 273
8.5.1 信号量的基本概念 273
8.5.2 信号量的操作 274
8.5.3 一个实例semtool 276
8.5.4 利用信号量实现对记录的上锁 282
小结 284
8.6 共享内存段 284
8.6.1 共享内存段的基本概念 284
8.6.2 共享内存段的操作 285
8.6.3 共享内存段应用实例 287
小结 289
第9章 Socket网络编程 290
9.1 网络基础知识 291
9.1.1 计算机网络的概念 291
9.1.2 网络分层结构 291
9.1.3 TCP/IP协议集 292
小结 295
9.2 基本Socket编程 296
9.2.1 套接口Socket概念简介 296
9.2.2 套接口Socket使用简介 297
9.2.3 套接口地址结构 298
9.2.4 IP地址和如何使用IP地址 299
9.2.5 套接口编程的基本系统调用 300
9.2.6 简单Client-Server实例 307
9.2.7 I/O多路复用——select 调用 314
9.2.8 套接口选项 316
9.2.9 TCP的Proxy实例 322
9.2.10 非阻塞I/O 329
9.2.11 套接口超时 341
小结 343
9.3 高级Socket编程 343
9.3.1 inetd守护进程 343
9.3.2 带外数据 348
9.3.3 线程简介 353
9.3.4 原始套接口 358
第三部分 Unix下的其他开发语言 378
第10章 Perl编程简介 378
10.1 Perl的简介 379
小结 380
10.2 标量及其运算 380
10.2.1 标量 380
10.2.2 标量的运算 382
小结 384
10.3 Perl的语法 384
小结 385
10.4 列表、数组和关联数组 385
10.4.1 列表 385
10.4.2 列表数组 385
10.4.3 关联数组 386
小结 390
10.5 子程序 390
小结 392
10.6 文件以及文件系统的操作 392
10.6.1打开和关闭文件 393
10.6.2 读文件和写文件 393
10.6.3命令行参数的运用 393
10.6.4 判断文件状态 394
10.6.5 文件系统的操作 395
小结 397
10.7 Perl的流控制 397
10.7.1 条件判断 397
10.7.2 循环语句 398
小结 401
10.8 Perl的指针——引用 401
10.8.1 引用的概念 401
10.8.2 对简单标量变量的引用 402
10.8.3 对列表数组的引用 403
10.8.4 关联数组的引用 404
10.8.5 参数的引用 406
10.8.6 子程序的引用 407
10.8.7 文件句柄的引用 408
小结 408
10.9 Perl与Unix系统的互动操作 409
小结 410
第11章 PHP3编程简介 411
11.1 PHP的简介 412
11.1.1 PHP的诞生与发展 412
11.1.2 PHP的特点 413
11.1.3 PHP的编译 413
小结 414
11.2 PHP的变量 414
11.2.1 内部变量 415
11.2.2 动态变量 417
11.2.3 外部变量 417
小结 418
11.3 变量类型的转换 418
11.3.1 强制类型转换 419
11.3.2 字符串转换 419
小结 419
11.4 PHP的运算符 420
11.4.1 三重运算符 420
11.4.2 算术运算符 420
11.4.3 条件运算符 420
11.4.4 一元运算符 421
11.4.5 位运算符 421
11.4.6 字符串连接运算符 422
11.4.7 逻辑运算符 422
11.4.8 赋值运算符 424
小结 425
11.5 PHP的程序结构 425
11.5.1 表达式 425
11.5.2 语句 426
11.5.3 函数 426
小结 428
11.6 PHP的类 428
小结 430
第12章 Java编程 431
12.1 Java的产生与发展 432
12.1.1 Java的历史 432
12.1.2 Java的特点 432
12.1.3 Java的应用 433
小结 434
12.2 Java程序的编译、调试和运行 434
12.2.1 JDK简介 434
12.2.2 如何编译和调试Java源程序 434
12.2.3 如何执行Java源程序 435
小结 436
12.3 Java数据类型及运算 436
12.3.1 Java的数据类型 436
12.3.2 数据类型转换 438
12.3.3 数据运算符 439
小结 443
12.4 Java数组 443
12.4.1 一维数组 443
12.4.2 多维数组 446
小结 449
12.5 Java的对象、类、包和接口 449
12.5.1 对象、类、方法和消息之间的关系 449
12.5.2 继承和多态性 450
12.5.3 Java的类 451
12.5.4 Java的对象 456
12.5.5 Java的包 458
12.5.6 Java的接口 460
12.5.7 完整的Java源文件 462
小结 463
12.6 Java的程序流控制 463
12.6.1 分支语句 463
12.6.2 循环语句 467
12.6.3 异常事件处理语句 470
12.6.4 注释语句 471
小结 471
12.7 Java的线程控制 471
12.7.1 线程 471
12.7.2 构造一个线程体 473
12.7.3 同步与共享 475
小结 476