linux下fork的运行机制
http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html
Linux下编程为什么多用进程少用线程
http://andylin02.iteye.com/blog/693103
国外计算机科学经典教材•UNIX原理与应用(第4版)
http://www.tupwk.com.cn/cata/viewbook.asp?id=1655
http://www.ebookcn.com/book/146132#download
责任编辑:王 军 王 婷
装帧设计:孔祥丰
责任校对:成凤进
责任印制:
出版发行:清华大学出版社 地 址:北京清华大学学研大厦A座
 http://www.tup.com.cn 邮 编:100084
 c-service@tup.tsinghua.edu.cn
社 总 机:010-62770175 邮购热线:010-62786544
投稿咨询:010-62772015 客户服务:010-62776969
印 刷 者:
装 订 者:
经 销:全国新华书店
开 本:185×260 印 张:41.5 字 数:1016千字
版 次:2008年1月第1版 印 次:2008年1月第1次印刷
印 数:1~4000
定 价:78.00元
目 录
第Ⅰ部分 初 级 篇
第1章 入门 3
1.1 什么是操作系统 4
1.2 UNIX操作系统 5
1.3 了解自己的机器 5
1.4 一个简单的会话过程 7
1.4.1 用账号和口令登录 7
1.4.2 命令 9
1.4.3 显示日期和时间的命令date 9
1.4.4 两个重要的事实 10
1.4.5 清屏命令——tput 10
1.4.6 日历命令——cal 10
1.4.7 检查当前用户命令——who 11
1.4.8 查看进程命令——ps 12
1.4.9 文件列表命令——ls 12
1.4.10 把输出重定向到文件 13
1.4.11 统计文件的行数
命令——wc 13
1.4.12 命令之间的导向作用 14
1.4.13 shell指令的编程特性 14
1.4.14 退出命令——exit 14
1.5 UNIX简史 15
1.5.1 UNIX的BSD版 15
1.5.2 UNIX的其他版本 16
1.5.3 Internet时代 16
1.5.4 来自Windows的挑战 17
1.6 Linux与GNU 17
1.7 小结 17
第2章 UNIX的体系结构与命令用法 20
2.1 UNIX的系统结构 21
2.1.1 任务分工——内核和壳 21
2.1.2 文件与进程 22
2.1.3 系统调用 23
2.2 UNIX系统的主要特性 23
2.2.1 UNIX是一个多用户系统 23
2.2.2 UNIX是一个多任务系统 24
2.2.3 UNIX系统采用积木构建法 24
2.2.4 UNIX的工具包 25
2.2.5 模式匹配 25
2.2.6 编程工具 25
2.2.7 帮助文档 26
2.3 POSIX和单一UNIX规范 26
2.4 定位命令文件 27
2.5 内部命令与外部命令 28
2.6 命令格式 28
2.6.1 可选项 29
2.6.2 文件名参数 30
2.6.3 例外情形 30
2.7 命令的灵活使用 31
2.7.1 组合命令 31
2.7.2 命令自动换行与多行命令 31
2.7.3 在前一个命令结束之前输入
命令 32
2.8 浏览在线帮助文档的man
命令 32
2.9 man文档的组成 34
2.9.1 man帮助页的组成 35
2.9.2 利用man文档了解man的
用法 35
2.10 利用man -k、apropos和
whatis命令得到的帮助 36
2.11 出错时的处理 37
2.12 小结 40
第3章 通用命令介绍 43
3.1 日历命令——cal 44
3.2 显示系统日期命令——date 45
3.3 回显命令——echo 45
3.4 用printf命令取代echo命令 47
3.5 计算器命令——bc 48
3.6 会话过程记录命令——script 49
3.7 电子邮件基础 50
3.8 万能的邮件处理
工具——mailx 51
3.8.1 发送邮件 51
3.8.2 接收邮件 52
3.8.3 mailx的内部命令 53
3.9 口令修改命令passwd 55
3.10 查看系统当前用户的
命令——who 56
3.11 了解系统特性的
命令——uname 57
3.12 获取终端名称的命令——tty 58
3.13 显示和设置终端特性的
命令——stty 59
3.14 小结 60
第4章 文件系统 63
4.1 文件 63
4.1.1 普通文件 64
4.1.2 目录文件 64
4.1.3 设备文件 65
4.2 文件的命名规则 65
4.3 父目录与子目录的关系 66
4.4 HOME变量——主目录 67
4.5 显示当前目录命令——pwd 68
4.6 改变当前目录命令——cd 68
4.7 创建目录命令——mkdir 69
4.8 删除目录命令——rmdir 70
4.9 绝对路径 71
4.10 相对路径 72
4.11 目录列表命令——ls 74
4.12 UNIX文件系统 77
4.13 小结 78
第5章 普通文件 81
5.1 显示和创建文件命令——cat 82
5.1.1 cat命令的可选项(-v和-n) 82
5.1.2 用cat命令创建文件 82
5.2 文件复制命令——cp 83
5.3 文件删除命令——rm 85
5.4 文件重命名命令——mv 86
5.5 分页输出命令——more 87
5.5.1 导航 88
5.5.2 重复参数 89
5.5.3 搜索匹配模式 89
5.5.4 在管道中使用more命令 89
5.6 lp子系统——文件打印命令 90
5.6.1 lp命令可选项 90
5.6.2 lp子系统的其他命令 91
5.7 文件类型识别命令file 92
5.8 统计行数、字数和字符数的
命令——wc 92
5.9 数据的八进制显示命令od 93
5.10 文件比较命令cmp 94
5.11 查找两个文件相同之处的
命令comm 95
5.12 文件转换命令diff 96
5.13 实现DOS与UNIX文件的
转换:dos2unix和unix2dos
命令 96
5.14 文件压缩与文件归档 98
5.15 压缩和解压缩命令:gzip和
gunzip 98
5.16 归档程序tar 100
5.16.1 创建归档文件(-c) 100
5.16.2 解压归档文件(-x) 101
5.16.3 浏览归档文件的内容(-t) 101
5.17 将压缩与归档功能合二为一
的命令:zip和unzip 102
5.18 小结 103
第6章 文件的基本属性 106
6.1 显示文件属性命令——ls -l 107
6.2 用-d可选列出目录的属性 108
6.3 文件所有权 109
6.4 文件权限 109
6.5 改变文件权限
命令——chmod 110
6.5.1 相对权限设置 111
6.5.2 绝对权限设置 112
6.5.3 安全隐患 114
6.5.4 递归模式的chmod
命令(-R) 114
6.6 目录权限 115
6.7 改变文件的所有权 115
改变文件所有权命令——chown 116
6.7.2 改变组所有者
命令——chgrp 116
6.8 小结 117
第7章 vi编辑器 120
7.1 初识vi编辑器 121
7.1.1 重复因子 123
7.1.2 .exrc文件 123
7.1.3 几个小技巧 123
7.2 输入模式——文本输入和
文本替换 124
7.2.1 插入文本(i和a命令) 124
7.2.2 在行首行尾插入文本 125
7.2.3 新建一行(o或O命令) 125
7.2.4 文本替换(r、s、R和
S命令) 126
7.3 保存文件和退出ex模式 127
7.3.1 保存文件(:w) 128
7.3.2 保存和退出命令
(:x 和:wq) 128
7.3.3 放弃编辑命令(:q) 129
7.3.4 保存所选的行 129
7.3.5 暂时返回到shell的命令
(:sh或[Ctrl+z]) 130
7.3.6 从紧急事故中恢复数据
(:recover和:r) 130
7.4 导航命令 130
7.4.1 移动命令(h、j、k和l) 131
7.4.2 单词导航(b、e和w) 131
7.4.3 移动行首行尾(0、|和$) 132
7.4.4 翻页命令([Ctrl+f]、[Ctrl+b]、
[Ctrl+d]和[Ctrl+u] 132
7.4.5 绝对移动命令 133
7.5 编辑文本 133
7.5.1 删除文本(x和dd) 134
7.5.2 移动文本(p) 135
7.5.3 复制文本(y和p) 135
7.5.4 行合并命令(J) 135
7.6 撤消最近一次的编辑操作
(u和U) 136
7.7 重复上次操作(.) 136
7.8 模式搜索(/和?) 137
7.9 替换命令(:s) 139
7.10 小结 140
第8章 shell 143
8.1 shell的命令解释过程 144
8.2 shell的类型 145
8.3 模式匹配——通配符 145
8.3.1 *和?通配符 146
8.3.2 匹配“." 147
8.3.3 字符类 147
8.3.4 无规律的匹配模式 148
8.3.5 总结 149
8.4 转义和引用 149
8.4.1 转义机制 150
8.4.2 引用 151
8.4.3 echo命令中的转义字符 152
8.5 重定向符与三个标准文件 152
8.5.1 标准输入 153
8.5.2 标准输出 154
8.5.3 标准错误 155
8.5.4 连接标准输出和标准输入
的过滤器 157
8.6 两个特殊文件:/dev/null和
/dev/tty 158
8.7 管道符 159
8.8 分叉符命令tee 162
8.9 命令替换 163
8.10 shell变量 164
8.10.1 引号和转义的作用 165
8.10.2 什么情形下使用shell
变量 166
8.11 小结 167
第9章 进程 171
9.1 进程的基本概念 172
9.1.1 shell进程 172
9.1.2 父进程与子进程 173
9.1.3 父进程等待或不等待子
进程的死亡 173
9.2 显示进程状态命令ps 173
9.3 系统进程(–e或–A) 176
9.4 进程创建的机制 177
9.5 内部命令和外部命令 179
9.6 进程状态和僵尸状态 179
9.7 在后台运行作业 180
9.7.1 后台运行命令——& 180
9.7.2 nohup命令 180
9.8 降低优先级命令——nice 181
9.9 用信号方式终止进程 182
9.10 作业控制 183
9.11 在将来某个时刻运行——at
和batch命令 185
9.11.1 一次性自动执行
命令——at 185
9.11.2 批处理命令batch 186
9.12 周期性执行作业的
命令——cron 186
9.13 查看进程运行时间的
命令——time 188
9.14 小结 188
第10章 环境设置 191
10.1 shell的演变 192
10.2 环境变量 192
10.3 常用的环境变量 193
10.4 别名(bash和Korn shell) 197
10.5 命令的历史记录(bash
和ksh) 198
10.5.1 根据事件代号访问历史
命令(!和r) 199
10.5.2 根据上下文执行历史
命令 200
10.5.3 在先前的命令中执行
替换 200
10.5.4 使用前面命令的最后
一个参数($_) 200
10.5.5 历史变量 201
10.6 行编辑命令(bash和ksh) 201
10.6.1 编辑命令行 201
10.6.2 在历史列表中搜索先前
的命令 202
10.7 其他特性(bash和ksh) 202
10.7.1 使用set -o命令 203
10.7.2 代字符的替换作用 203
10.8 启动脚本 204
10.8.1 启动文件(.profile和
.bash_profile) 204
10.8.2 rc文件(bash和ksh) 205
10.9 小结 206
第11章 文件的其他属性 209
11.1 文件系统与文件的inode
结点 210
11.2 硬链接 211
11.2.1 建立硬链接——ln命令 212
11.2.2 硬链接的应用 212
11.3 符号连接和ln命令 213
11.4 目录 214
11.4.1 读权限 215
11.4.2 写权限 215
11.4.3 执行权限 215
11.5 设置文件和目录默认
权限——umask命令 216
11.6 修改和访问时间 217
11.7 定位文件命令find 218
11.7.1 查找条件 220
11.7.2 find命令的操作符(!,-o
和-a) 222
11.7.3 动作部分的可选项 222
11.8 小结 223
第12章 简单的过滤器 226
12.1 实例数据库 227
12.2 分页命令pr 227
12.3 显示文件头命令——head 229
12.4 显示文件尾——tail命令 229
12.5 垂直截取——cut命令 231
12.5.1 按列截取(-c) 231
12.5.2 用cut命令截取字段(-f) 231
12.6 粘贴——paste命令 232
12.7 排序命令sort 234
12.8 定位重复行和非重复行
命令——uniq 237
12.9 字符变换命令tr 239
12.10 一个实例——单词统计表 241
12.11 小结 242
第13章 使用正则表达式的
过滤器--grep与sed 244
13.1 模式搜索命令grep 245
13.2 初探基本正则表达式(BRE) 248
13.2.1 字符类 249
13.2.2 直接前缀符(*) 250
13.2.3 点的作用——匹配单个
字符 251
13.2.4 位置匹配(^和$) 251
13.2.5 元字符不起作用的情形 252
13.3 扩展正则表达式(ERE)和
grep命令 253
13.3.1 +和? 253
13.3.2 多模式匹配(|、(和)) 254
13.4 流编辑命令sed 254
13.5 行地址 256
13.6 使用多个指令(-e和-f) 257
13.7 根据上下文寻址 257
13.8 把选取的行写入文件(w) 258
13.9 文本编辑 259
13.9.1 行插入和修改
指令(i、a、c) 259
13.9.2 删除行(d) 260
13.10 替换操作(s) 260
13.11 再识基本正则表达式 263
13.11.1 重复模式(&) 263
13.11.2 间隔正则表达式 263
13.11.3 带标志的正则表达式 264
13.12 小结 266
第14章 shell程序设计基础 269
14.1 shell脚本 270
14.2 read命令——脚本的交互式
执行 271
14.3 使用命令行参数 272
14.4 exit命令和命令的退出
状态 274
14.5 逻辑运算符 &&和| |——有
条件执行 275
14.6 if条件语句 276
14.7 利用test和[ ]符号计算
表达式的值 277
14.7.1 数值比较 277
14.7.2 字符串比较 279
14.7.3 文件测试 281
14.8 case 条件语句 282
14.8.1 匹配多个模式 284
14.8.2 在case结构中使用
通配符 284
14.9 数值计算和字符串处理
命令expr 284
14.9.1 数值运算 285
14.9.2 字符串处理 285
14.10 脚本程序的另外一种调用
方法——$0 287
14.11 while循环结构 288
14.11.1 利用while循环等待
一个文件 289
14.11.2 设置无限循环 290
14.12 for循环——作用在列表上
的循环 290
14.12.1 各种列表 291
14.12.2 修改文件的扩展名
——basename命令 292
14.13 操作位置参数命令:set
和shift 293
14.13.1 位置参数左移命令
shift 294
14.13.2 执行命令替换的set--
命令 295
14.14 here文档(<<) 295
14.15 程序中断命令trap 297
14.16 用set -x命令调试shell
脚本 298
14.17 数据验证和数据录入实例 298
14.17.1 代码列表搜索程序
valcode.sh 298
14.17.2 数据录入脚本程序
dentry1.sh 299
14.18 小结 301
第15章 系统管理基础 305
15.1 系统管理员的登录身份
——root 306
15.2 系统管理员的特权 307
15.2.1 设置系统日期——date
命令 307
15.2.2 向用户传达消息——wall
命令 307
15.2.3 设置文件大小的最大值
——ulimit命令 308
15.2.4 控制用户使用at和cron 308
15.3 安全维护 308
15.3.1 passwd命令可以修改
任何口令 308
15.3.2 临时权限SUID 309
15.3.3 粘着位 310
15.4 用户管理 311
15.4.1 创建组——groudadd
命令 311
15.4.2 创建用户——useradd
命令 312
15.4.3 用户配置文件:/etc/passwd
和/etc/shadow 312
15.4.4 修改和删除用户——
usermod和userdel命令 313
15.5 启动和关机过程 313
15.6 管理磁盘空间 315
15.6.1 报告磁盘可用空间——
df命令 315
15.6.2 报告磁盘使用情况——
df命令 316
15.7 设备文件 317
15.7.1 块设备和字符设备 318
15.7.2 主设备号和次设备号 318
15.8 操作软盘设备 319
15.8.1 软盘格式化命令——
format和fdformat 319
15.8.2 磁盘复制命令——dd 320
15.8.3 操作DOS磁盘 320
15.9 备份程序cpio 321
15.9.1 备份文件(-o) 322
15.9.2 恢复文件(-i) 323
15.9.3 显示归档文件里的文件
列表(-it) 324
15.9.4 其他可选项 325
15.10 tar命令 325
15.10.1 备份文件(-c) 326
15.10.2 文件恢复(-x) 327
15.10.3 显示归档文件的
内容(-t) 328
15.10.4 其他可选项 328
15.11 小结 329
第Ⅱ部分 高 级 篇
第16章 X Window系统 335
16.1 X系统基础 336
16.2 通用桌面环境 338
16.3 启动和退出X系统 339
16.4 终端仿真程序 340
16.5 剪切和粘贴操作 341
16.5.1 使用鼠标按钮 342
16.5.2 高级的剪切和粘贴
操作:xclipboard 342
16.6 远程运行X客户端程序 343
16.6.1 显示程序 343
16.6.2 使用DISPLAY变量 343
16.6.3 使用-display可选项 344
16.7 命令行可选项 344
16.7.1 窗口位置和大小
(-geometry) 345
16.7.2 设置颜色(-fg,-bg和-rv) 345
16.7.3 其他可选项 346
16.8 一些标准的X客户端程序 346
16.8.1 文件管理器dtfile 346
16.8.2 时钟模拟器xclock 347
16.8.3 计算器xcalc 347
16.8.4 邮件通知程序xbiff 348
16.8.5 显示系统负荷命令
xload 348
16.8.6 终止窗口命令xkill 349
16.9 启动文件 349
16.10 X系统的资源 350
16.10.1 装载资源命令
——xrdb 350
16.10.2 -xrm可选项——使
配置文件无效 351
16.11 小结 351
第17章 网络工具 353
17.1 TCP/IP基础 354
17.1.1 TCP/IP工作原理 354
17.1.2 TCP/IP的特点 354
17.1.3 IP地址 355
17.1.4 守护进程和端口 355
17.2 域名解析 356
17.3 TCP/IP应用程序 357
17.4 检查网络是否连通——
ping命令 358
17.5 远程登录命令——telnet 358
17.6 文件传输协议ftp 359
17.6.1 文件和目录基本操作
命令 360
17.6.2 传输文件 361
17.6.3 匿名ftp登录 362
17.7 密码学基础 363
17.7.1 对称密钥算法 363
17.7.2 非对称密钥算法 364
17.8 SSH——安全外壳 364
17.8.1 主机认证 365
17.8.2 rhosts/shosts认证模式 365
17.8.3 用对称算法进行用户
认证 366
17.8.4 利用SSH代理实现
非交互式登录 367
17.9 SSH工具 368
17.9.1 远程登录和命令的
执行——ssh和slogin 369
17.9.2 安全的文件传输
命令——sftp和scp 369
17.10 域名系统(DNS) 370
17.11 电子邮件服务 373
17.12 MIME——处理邮件中的
二进制附件 374
17.13 万维网 375
17.13.1 统一资源定位器
(URL) 376
17.13.2 Web协议HTTP 377
17.13.3 执行外部程序 377
17.13.4 网页设计语言
——HTML 378
17.13.5 Web浏览器 379
17.14 Web上的多媒体——
再论MIME协议 379
17.15 小结 380
第18章 高级过滤器——awk命令 383
18.1 awk命令简单的过滤功能 384
18.2 把一行拆分成字段 385
18.3 printf格式化输出 386
18.4 变量和表达式 386
18.5 比较运算符 387
18.5.1 正则表达式运算符:
~和!~ 388
18.5.2 数值比较 389
18.6 数值运算 390
18.7 变量 390
18.8 -f可选项——把awk程序
保存到一个文件里 391
18.9 BEGIN段和END段 391
18.10 内置变量 392
18.11 数组 393
18.11.1 关联(哈希)数组 394
18.11.2 环境数组
ENVIRON[ ] 395
18.12 函数 395
18.13 流程控制——if语句 397
18.14 for循环 398
18.15 while循环 400
18.16 小结 400
第19章 perl——最重要的文本
处理器 403
19.1 perl概述 404
19.2 chop截尾函数——删除
最后一个字符 405
19.3 变量与运算符 406
19.4 字符串处理函数 407
19.5 在命令行中说明文件名 408
19.6 默认变量$_ 410
19.7 当前行号($.)和范围
运算符(..) 410
19.8 列表与数组 411
19.8.1 命令行参数 ARGV[ ] 413
19.8.2 修改数组元素 414
19.9 列表循环——foreach 414
19.10 split函数——把一行拆分
成列表或数组 415
19.10.1 拆分到变量里 416
19.10.2 拆分到数组里 416
19.11 join命令——合并列表 417
19.12 dec2bin.pl——把十进制
转化为二进制 418
19.13 用grep在数组中搜索
一个模式 419
19.14 关联数组 420
19.15 正则表达式与模式替换 422
19.15.1 s和tr函数 422
19.15.2 识别空白符、数字和
单词 424
19.15.3 IRE和TRE用法 424
19.15.4 在位编辑文件 425
19.16 文件的处理 425
19.17 文件属性测试 426
19.18 子程序 427
19.19 小结 429
第20章 vi编辑器的高级功能 433
20.1 操作符 433
20.1.1 删除、移动文本(d、p
和P命令) 434
20.1.2 文本复制(y命令) 434
20.1.3 修改文本(c命令) 435
20.1.4 过滤文本(!命令) 435
20.2 ex模式——多文件操作 437
20.2.1 文件切换 437
20.2.2 插入文件和命令执行
结果 438
20.3 符号缓冲区——保存多个
文本段 439
20.4 标号缓冲区——取消多个
行删除操作 440
20.5 输入控制符([Ctrl+v]) 441
20.6 字符搜索 442
20.7 标签文本 442
20.8 定制vi编辑器 443
20.8.1 set命令 443
20.8.2 map——建立快捷键
映射表 444
20.8.3 abbr——定义文本输入
缩写符 445
20.9 小结 446
第21章 高级shell程序设计 449
21.1 shell与子shell 450
21.2 组运算符——()和{} 450
21.3 export命令——导出shell
变量 451
21.4 在当前shell运行
脚本——.命令 452
21.5 let运算命令(ksh 和
bash) 453
21.6 数组(ksh和bash) 454
21.7 字符串处理(ksh和bash) 455
21.7.1 字符串的长度 455
21.7.2 根据模式的匹配结果
求子串 456
21.8 带条件的参数替换 457
21.9 流的合并 458
21.10 shell函数 459
21.10.1 利用系统日期生成
一个文件名 460
21.10.2 函数返回值 460
21.10.3 验证输入日期的
有效性 461
21.11 eval命令——两次求值 462
21.12 exec 语句 464
21.13 小结 467
第22章 程序开发工具 469
22.1 处理多文件C语言应用
程序 470
22.2 一个多文件应用程序 470
22.2.1 编译和连接程序 472
22.2.2 保留.o文件的原因 473
22.3 make命令——保持程序
更新 474
22.3.1 删除冗余内容 476
22.3.2 make的其他功能:文件
清理和备份 476
22.3.3 宏 477
22.4 ar命令——建立一个库文件
(归档文件) 478
22.4.1 使用库文件 479
22.4.2 用make命令维护
库文件 480
22.5 静态库和共享库 480
22.6 版本控制工具——SCCS
和RCS 481
22.7 一次SCCS会话 482
22.7.1 admin命令——创建
一个SCCS文件 483
22.7.2 get命令——检出版本 484
22.7.3 delta——检入命令 485
22.7.4 unget命令——取消
修改 486
22.8 活动和历史信息 486
22.8.1 sact——显示活动状态
信息 486
22.8.2 prs命令——显示SCCS
历史记录 487
22.9 用SCCS继续编辑 487
22.9.1 get -r命令改变默认的
数字编号 488
22.9.2 使用标识关键字 489
22.10 修订控制系统(RCS) 489
22.10.1 用ci建立一个RCS
文件 490
22.10.2 co和ci——检出和
检入命令 491
22.10.3 设置版本号 492
22.10.4 rlog命令——查看
版本状态 492
22.10.5 ident命令——使用
标识关键字 493
22.11 小结 493
第23章 系统程序设计(上)——
文件 496
23.1 系统调用基础 497
23.1.1 系统调用与库函数 497
23.1.2 系统调用的执行过程 497
23.1.3 原子操作 498
23.2 打开和关闭文件 498
23.2.1 打开或建立一个
文件——open命令 499
23.2.2 close系统调用——关闭
文件 500
23.3 I/O系统调用 501
23.3.1 read调用——读取文件 501
23.3.2 write调用——写入文件 502
23.3.3 ccp.c——文件复制
程序 502
23.3.4 lseek调用——定位偏移
指针 503
23.3.5 reverse_read.c——逆序
读取文件 504
23.3.6 截断文件——truncate和
ftruncate 505
23.4 带缓冲和不带缓冲的读写
操作 506
23.5 umask命令——文件创建与
权限修改 507
23.6 错误处理 508
23.6.1 strerror函数 508
23.6.2 perror函数 509
23.6.3 带错误处理的文件逆序读
取程序reverse_read2.c 510
23.7 文件共享 512
23.7.1 文件描述表 513
23.7.2 文件表 513
23.7.3 vnode表 514
23.8 目录浏览 515
23.9 读取目录文件 516
23.10 修改目录文件的记录 517
23.10.1 建立和删除目录——
mkdir和rmdir系统
调用 518
23.10.2 建立硬连接和符号
连接——link和
symlink调用 518
23.10.3 unlink:删除连接 518
23.10.4 rename:重命名文件名、
目录名和连接文件名 519
23.11 stat——读取inode 519
23.11.1 attributes.c显示文件
部分属性 520
23.11.2 作用于st_mode成员上
的S_IFMT屏蔽字 521
23.11.3 用S_IS系列宏判断
文件类型 522
23.11.4 lsdir.c——只列出目录 522
23.12 查看文件的存取权限 524
23.12.1 check_all_perm.c——
查看12个权限位 524
23.12.2 access——查看文件
所有者的权限 526
23.12.3 SUID对文件存取的
影响 528
23.13 修改文件属性 529
23.13.1 chmod和fchmod——
修改文件权限 529
23.13.2 chown——修改文件
所有权 530
23.13.3 utime——修改文件的
时间戳 530
23.13.4 atimetime.c——创建具
有相同时间戳的文件 531
23.14 小结 532
第24章 系统程序设计(下)——进程
控制 536
24.1 进程的几个抽象概念 537
24.1.1 虚拟地址空间 537
24.1.2 进程表 538
24.2 process.c程序——查看进程
的权限 539
24.3 创建一个进程 540
24.3.1 fork系统调用——复制
当前进程 540
24.3.2 fork.c——一个简单的
子进程创建程序 540
24.3.3 getenv和setenv——使用
环境变量 542
24.3.4 childenv.c——传递环境 542
24.4 _exit和exit——终止进程 544
24.5 等待状态——读取子进程的
退出状态值 545
24.5.1 wait——等待子进程
死亡 545
24.5.2 wait.c——说明wait和
WEXISTATUS的用法 545
24.5.3 waitpid——一个功能
更强大的等待机制 546
24.6 进程组 547
24.7 僵尸进程和孤儿进程 548
24.8 exec——进程创建中的最后
一个步骤 549
24.8.1 execl--"l”系列中最
重要函数 549
24.8.2 execv--v组中最重要
的函数 551
24.8.3 exec_and_fork.c——在
子进程执行exec 551
24.8.4 l家族和v家族的其他
成员 552
24.9 shell.c——一个类似于
shell的程序 553
24.10 文件描述符的使用 555
24.10.1 dup——复制文件
描述符 556
24.10.2 dup2——复制描述符
的一种更好方法 557
24.10.3 fcntl——比dup和
dup2更好的函数 558
24.11 pipe系统调用——进程
之间的通信 559
24.11.1 pipe与fork一起使用 560
24.11.2 pipe2.c——管道中运行
UNIX命令 561
24.12 信号机制 562
24.12.1 信号处理 562
24.12.2 内核处理信号的过程 563
24.12.3 与信号有关的系统
调用 564
24.13 signal调用——设置信号
处理程序 564
24.13.1 响应SIGALRM信号 565
24.13.2 为什么signal调用不
可靠 566
24.13.3 捕获来自键盘终端
的信号 567
24.14 killprocess.c——用kill产生
信号 568
24.15 小结 570
第25章 高级系统管理 573
25.1 安全措施 574
25.1.1 口令老化机制 574
25.1.2 受限的shell 574
25.1.3 只允许一个用户关机 575
25.2 分区与文件系统 575
25.2.1 引导块 576
25.2.2 超级块 576
25.2.3 inode块 577
25.2.4 数据块 577
25.3 常用的文件系统和类型 578
25.4 fdisk——建立分区 579
25.5 mkfs——创建文件系统 580
25.6 加载和卸载文件系统 581
25.6.1 用mount加载文件
系统 581
25.6.2 umount——卸载文件
系统 582
25.6.3 /etc/fstab文件——配置
mount命令 582
25.6.4 mount的可选项 583
25.7 用fsck命令检查文件系统 584
25.8 系统启动和init命令 585
25.8.1 init命令——控制
运行级 586
25.8.2 使用/etc/inittab文件 586
25.8.3 init和getty 587
25.8.4 rc脚本程序 588
25.9 关机操作和sync操作 589
25.10 备份 590
25.10.1 用find命令进行增量
备份(-newer) 590
25.10.2 用find命令备份文件
系统 590
25.10.3 xargs——建立动态
命令行 591
25.10.4 保存备份文件的列表 591
25.11 小结 592
附录A C shell的结构 594
附录B vi/vim命令手册 601
附录C 命令反查表 609
附录D 测试题答案 614
??
UNIX原理与应用(第4版)
目 录
XII
XIX
深入理解计算机系统(中英文).7z
http://ishare.iask.sina.com.cn/f/21742054.html?from=like
http://202.102.94.56/2/ishare.down.sina.com.cn/22119041.7z?ssig=9SfMW00Dr%2B&Expires=1346342400&KID=sina,ishare&ip=1346234027,221.226.47.&fn=%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%28%E4%B8%AD%E8%8B%B1%E6%96%87%29.7z
迷你书-深入理解计算机系统(原书第二版).pdf
http://ishare.iask.sina.com.cn/f/22469545.html?from=like
http://static.ishare.down.sina.com.cn/6084532.pdf?ssig=yrNMg%2FaHNH&Expires=1346342400&KID=sina,ishare&ip=1346233992,221.226.47.&fn=%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F.pdf
end