资源详情
Unix环境高级编程虽然是一本很经典的案头必备的书籍,但它更像是一本字典,对于初学者来说看起来很艰难,《Unix/Linux编程实践教程》中有趣的实例与循序渐进的讲解,我认为更适合初学者的学习 【课程目录】 第1章:unix系统编程概述 介绍 什么是系统编程 简单的程序模型 系统模型 操作系统的职责 为程序提供服务 理解系统编程 系统资源 目标:理解系统编程 方法:通过三个问题来理解 从用户的角度来理解unix unix能做些什么 登录--运行程序--注销 目录操作 文件操作 从系统的角度来看unix 用户和程序之间的连接方式 网络桥牌 bc:unix的计算器 从bc/dc到web 动手实践 工作步骤与概要图 接下来的工作步骤 unix的概要图 unix的发展历程 第2章:用户、文件操作与联机帮助:编写who命令 介绍 关于命令who 问题1:who命令能做些什么 问题2:who命令是如何工作的 问题3:如何编写who 问题:如何从文件中读取数据结构 答案:使用open、read和close 编写wh01.c 显示登录信息 编写wh02.c 回顾与展望 编写cp(读和写) 问题1:cp命令能做些什么 问题2:cp命令是如何创建/重写文件的 问题3:如何编写cp unix编程看起来好像很简单 提高文件i/o效率的方法:使用缓冲 缓冲区的大小对忄生能的影响 为什么系统调用需要很多时间 低效率的wh02.c 在wh02.c中运用缓冲技术 内核缓冲技术 文件读写 注销过程:做了些什么 注销过程:如何工作的 改变文件的当前位置 编写终端注销的代码 处理系统调用中的错误 第3章:目录与文件属忄生:编写ls 介绍 问题1:1s命令能做什么 1s可以列出文件名和文件的属忄生 列出指定目录或文件的信息 经常用到的命令行选项 问题1的答案 文件树 问题2:1s是如何工作的 什么是目录 是否可以用open、read和close来操作目录 如何读目录的内容 问题3:如何编写ls 编写ls-1 问题1:ls-1能做些什么 问题2:ls-1是如何工作的 用stat得到文件信息 stat提供的其他信息 如何实现 将模式字段转换成字符 将用户/组id转换成字符串 编写ls2.c 三个特殊的位 set-user-id位 set-group-id位 sticky位 用ls-1看到的特殊属忄生 ls小结 设置和修改文件的属忄生 文件类型 许可位与特殊属忄生位 文件的链接数 文件所有者与组 文件大小 时间 文件名 第4章:文件系统:编写pwd 介绍 从用户的角度看文件系统 目录和文件 目录命令 文件操作命令 针对目录树的命令 目录树的深度几乎没有限制 unix文件系统小结 unix文件系统的内部结构 第一层抽象:从磁盘到分区 第二层抽象:从磁盘到块序列 第三层抽象:从块序列到三个区域的划分 文件系统的实现:创建一个文件的过程 文件系统的实现:目录的工作过程 文件系统的实现:cat命令的工作原理 i-节点和大文件 unix文件系统的改进 理解目录 理解目录结构 与目录树相关的命令和系统调用 编写pwd pwd的工作过程 pwd的一种版本 多个文件系统的组合:由多棵树构成的树 装载点 多重i-节点号和设备交叉链接 符号链接 第5章:连接控制:学习stty 为设备编程 设备就像文件 设备具有文件名 设备和系统调用 例子:终端就像文件 设备文件的属忄生 编写write程序 设备文件和i-节点 设备与文件的不同之处 磁盘连接的属忄生 属忄生1:缓冲 属忄生2:自动添加模式 用open控制文件描述符 磁盘连接小结 终端连接的属忄生 终端的i/o并不如此简单 终端驱动程序 stty命令 编写终端驱动程序:关于设置 编写终端驱动程序:关tx数 编写终端驱动程序:关于位 编写终端驱动程序:几个程序例子 终端连接小结 其他设备编程:ioctl 文件、设备和流 第6章:为用户编程:终端控制和信号 软件工具与针对特定设备编写的程序 终端驱动程序的模式 规范模式:缓冲和编辑 非规范处理 终端模式小结 编写一个用户程序:play_again.c 信号 ctrl-c做什么 信号是什么 进程该如何处理信号 信号处理的例子 为处理信号做准备:play_again4.c 进程终止 为设备编程 第7章:事件驱动编程:编写一个视频游戏 视频游戏和操作系统 任务:单人弹球游戏(pong) 屏幕编程:curses库 介绍curses curses内部:虚拟和实际屏幕 时间编程:sleep 时钟编程1:alarms 添加时延:sleep sleep()是如何工作的:使用unix中的alarms 调度将要发生的动作 时间编程2:间隔计时器 添加精度更高的时延:usleep 三种计时器:真实、进程和实用 两种间隔:初始和重复 用间隔计时器编程 计算机有几个时钟 计时器小结 信号处理1:使用signal 早期的信号处理机制 处理多个信号 测试多个信号 信号机制其他的弱点 信号处理2:sigaction 处理多个信号:sigaction 信号小结 防止数据损毁(datacorruption) 数据损毁的例子 临界(criticalsections) 阻塞信号:sigprocmask和sigsetops 重入代码(reentrantcode):递归调用的危险 视频游戏中的临界区 kill:从另--个进程发送的信号 使用计时器和信号:视频游戏 bounceld.c:在一条线上控制动画 bounce2d.c:两维动画 完成游戏 输入信号,异步i/o 使用异步i/o 方法1:使用oasync 方法2:使用aio..read 弹球程序中需要异步读人吗 异步输入、视频游戏和操作系统 第8章:进程和程序:编写命令解释器sh 进程=运行中的程序 通过命令ps学习进程 系统进程 进程管理和文件管理 内存和程序 shell:进程控制和程序控制的--个工具 shell是如何运行程序的 shell的主循环 问题1:一个程序如何运行另一个程序 问题2:女口何建立新的进程 问题3:父进程如何等待子进程的退出 小结:shell如何运行程序 实现一个shell:psh2.c 思考:用进程编程 exit和exec的其他细节 进程死亡:exit和_exit exec家族 第9章:可编程的shell、shell变量和环境:编写自己的shell shell编程 什么是以及为什么要使用shell脚本语言 smshl--命令行解析 shell中的流程控制 if语句做些什么 if是女口何工作的 在stash中增加if
下载地址
链接:https://pan.baidu.com/s/1mhCjEEO 密码: sswb 解压密码:未加密,无解压密码