本文共 15559 字,大约阅读时间需要 51 分钟。
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
定价:¥78.00
责任编辑:王 军 王 婷
装帧设计:孔祥丰 责任校对:成凤进 责任印制: 出版发行:清华大学出版社 地 址:北京清华大学学研大厦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深入理解计算机系统(中英文).7zhttp://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