




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux 和和 Unix 编程基础编程基础 实验指导书实验指导书 易军凯易军凯 编编 北京化工大学信息科学与技术学院北京化工大学信息科学与技术学院 2007 年年 12 月月 1 前言前言 操作系统是计算机最重要的系统软件 是计算机应用的基础 Unix 系统是至今最优 秀的操作系统 虽历经几十年 有许多变化 但基本的体系结构保持稳定 更难能可贵 的是 在计算机发展如此迅速的今天 Unix 系统仍以其安全 稳定及强大的处理能力 仍为最主要的操作系统 计算机发展到几天 很多问题还依赖于 Unix 系统 结合上课内容完成 Unix 上机练习 上机从系统基本命令入手 由浅入深 抽丝剥 茧地将 Unix 编程实现逐步表现出来 同时针对不同的实现方法和命令展开深入的编程 上课内容将用大量篇幅分析多个 Unix 系统命令的实现方法 循序渐进地让实践者理解 并逐步精通 Unix 系统编程 进而具有编制 Unix 应用程序的能力 针对上课内容 在 上机实践过程中大量练习实际编程 能够处理多种 Unix 应用编程中出现的错误 为了 更深入地帮助学生理解和掌握这些知识点 本课程提供了 8 学时的上机实践课时 分 六次实验 每次 2 个学时 所列如下 1 修改 who2 c 能够支持 whoami 2 修改 ls1 c 能够支持文件排序 3 mesg 命令编程 4 进程控制编程 5 关于 more 的终端控制编程 6 终端窗口大小改变的响应编程 这些实验对于理解 unix linux 编程知识点是必不可少的 经验表明大量的上机编程 实践 多参与项目研发是学生熟练掌握编程的重要途径 上面的实验都假定在以下环境 下进行 1 操作系统 linux 2 开发语言 C C 3 编译器 gcc cc g c 如需要更改到其他环境 请参考其他操作系统的相关资料 以便顺利进行上述实验 为了确保上机实验效果 要求在实验中遵循以下要求 1 实验前认真预习实验内容和要求 2 根据自身知识的掌握情况 选定实验内容 3 上机实验过程中 完成编码工作 4 对编写的程序进行认真的分析 发现存在的问题 并进行测试 5 独立撰写严谨的 条理通顺的 字迹端正的实验报告 2 目录目录 实验一 修改 WHO2 C 能够支持 WHOAMI 3 实验二 修改 LS1 C 能够支持文件排序 6 实验三 MESG 命令编程 8 实验四 进程控制编程 10 实验五 关于 MORE 的终端控制编程 12 实验六 终端窗口大小改变的响应编程 14 3 实验一 修改 who2 c 能够支持 whoami 1 1 实验目的实验目的 1 初步了解 unix 编程步骤 2 了解如何登陆 unix linux 操作系统以及建立自己的用户 3 熟悉联机帮助和读文件函数 4 了解 who 命令能做些什么工作 5 who 命令是如何工作的 6 unix linux 上常用文本编辑器是如何输入文本的 7 如何编写 who 命令 8 如何使用 unix linux 环境下的编译器 9 如何编写 makefile 文件 1 2 实验要求实验要求 1 熟练掌握 unix linux 开机步骤以及能够建立自己的用户 2 仔细阅读联机帮助文档 3 读文件函数是如何实现的 4 熟练掌握 vi 和 emacs 编辑器 5 熟练掌握 makefile 文件的制作方法 6 熟练掌握编译器的使用 7 学会如何跟踪调试所编程序 8 认真学习 who 命令的实现原理 1 3 实验内容实验内容 1 unix linux 开机以及建立新用户 由于 unix linux 不同于 windows 操作系统 所以开 机步骤也不一样 所以要仔细查看开机步骤 另外一定要建立自己的用户 并且在 以后的操作中完全在自己的用户中进行各种命令和编程的操作 2 查看联机帮助 了解 whoami 的功能 who 命令实现了查看当前服务器上有哪些用 户在线 从哪里终端登陆服务器以及登陆时间等一系列属性 whoami 实现了自己登 陆服务器的用户是谁 并列举出自己登陆的属性 3 在编写程序前先了解 vi emacs 编辑器的功能 通过联机帮助熟练编辑器 可以输入 4 自己的第一个程序 并且能够的独立操作编辑器的插入 删除和修改等命令 4 对 who2 c 进行修改编程实现 whoami 功能 教材中已经实现了 who2 c 程序 能够在 一定程度上表达出了 who 功能 首先学生应该调试该程序成功 在此基础上通过第 一步了解 whoami 命令功能 改进 who2 c 程序 达到 whoami 功能 这是学生所写 第一个 unix linux 程序 5 使用 gcc cc c g 编译器 学生通过查看联机帮助 能够了解 unix linux 上常用编 译器 可以利用编译命令编译出自己的第一个执行程序 并且比较这四个编译器的 差别和各自的优缺点 6 编写 makefile 文件 在上面步骤中已经能够用编译命令编译出自己的执行程序了 这一步主要是学会把自己的编译命令写入 makefile 文件中 通过执行 make 命令直 接编译出程序 7 进一步编程实现 whoami 命令 利用编辑器改进 who2 c 程序 完成 makefile 文件 完全达到 whoami 功能 1 4 实验步骤实验步骤 1 开机进入 unix linux 操作系统 这时登陆进入 root 用户 利用 adduser useradd 命令 建立自己的用户 然后重启计算机退出 root 用户 进入使用自己的用户登陆 2 在 提示符下输入 vi myfile 命令 建立自己的第一个 unix linux 文件 按下 a 或 i 键 尝试输入一些文本 因为 vi 有两种状态 编辑和查看 如果想转入查看状态 可按 ESC 键 在 vi 中使用存盘退出 不存盘退出或及时存盘命令 3 通过查看联机帮助命令 man 对 make 命令和编译命令 gcc cc c g 部分掌握其 命令功能 4 查看 whoami 命令的功能 5 改进 who2 c 程序 实现 whoami 功能 进行编译执行 6 编写实验报告 1 5 实验提示实验提示 由于学生初次接触 unix linux 操作系统 对其操作和命令应该还比较陌生 所以在 上机前一定要查阅大量的资料 有条件的学生最好是在自己的电脑上安装 linux 操作系 统 这里主要说明两个方面的提示 makefile 和程序的编译 1 makefile 文件制作 vi makefile test test cpp g o test test cpp 在输入以上命令后存盘退出 建立自己的 makefile 文件 这里假设自己的源文件是 5 test cpp 编译器是 g 注意在 g 字符前必须是 tab 键 不能用空格代替 这时可以 在提示符下输入以下命令来编译程序得到 test 执行文件 如果源文件有语法错误 编译 器会提示 make test g o test test cpp 2 编译器的使用 由于编译器可以带各种参数 在第一次实验中只需掌握基本编译命令 以上面 test cpp 为例 得到执行文件 test 可按以下命令 g o test test cpp 如果只需得到中间文件 可按以下命令 得到 test o 文件 g o test cpp 6 实验二 修改 ls1 c 能够支持文件排序 2 1 实验目的实验目的 1 知道目录是文件的列表 2 了解 unix linux 系统的目录结构 3 熟悉目录操作的系统函数 4 文件类型以及如何知道文件的类型 5 文件属性以及如何知道文件的属性 6 位操作以及掩码的使用 7 用户与组 ID 以及 password 数据库 8 对字符串的排序操作 2 2 实验要求实验要求 1 需要详细了解 unix linux 目录结构 2 对位以及掩码操作需要熟练掌握 3 知道用户与组 ID 和 password 数据库的存放位置以及具体文件 4 掌握字符串的排序函数 5 进一步写出 ls1 c 的改进本 支持文件排序 2 3 实验内容实验内容 1 查看联机帮助 了解 ls 的功能 由于 ls 是用于列举出指定目录下的文件以及子目录 并且具有统计排序功能 教材中 ls1 c 已经实现了枚举文件和子目录功能 需要进 一步改进以实现排序 以此为基础 深入掌握 unix linux 编程 2 第一步先用编辑器完成 ls1 c 的录入 并把教材中没有的代码补齐 能够在操作系 统中真正运行 因为教材中代码往往是省略的 需要读者通过查找资料修改其源码 完善程序 当然还是要按照第一个实验的方法编写 makefile 文件 实现编译自动化 3 在 ls1 c 中嵌入文件排序函数 形成 ls2 c 程序 利用 qsort 快速排序算法能够对目录 参数内的文件实现排序 7 2 4 实验步骤实验步骤 1 开机进入 unix linux 操作系统 进入自己的用户登陆 2 联机帮助的查阅 仔细阅读 ls 功能 3 录入 ls1 c 源代码 修改补齐教材中的错误处 进行调试 完成实现基本列举文件 及子目录功能 4 改进 ls1 c 程序 对指定目录内的文件或子目录实现排序功能 5 编写实验报告 2 5 实验提示实验提示 因为字符串排序算法是数据结构内的重要内容 如果有不清楚之处需要重新学习数 据结构的排序算法 这里给出了一种快速算法 include include include int sort function const void a const void b char list 5 4 cat car cab cap can int main void int x qsort void list 5 sizeof list 0 sort function for x 0 x 5 x printf s n list x return 0 int sort function const void a const void b return strcmp a b 8 实验三 mesg 命令编程 3 1 实验目的实验目的 1 了解 unix 系统的终端操作 2 熟悉终端操作系统函数 3 熟悉在 unix linux 操作系统下如何调试执行程序 4 熟悉用户终端的属性获取函数 5 熟悉如何修改用户终端属性 6 进一步熟悉 unix linux 编程 实现 mesg 功能 3 2 实验要求实验要求 1 查看联机帮助 了解 mesg 功能 2 对于执行程序的调试工具 gdb 需要详细了解 3 终端属性获取过程 4 中断属性的重新设置过程 5 进一步熟悉制作 makefile 文件以及更熟练使用编辑器和编译器 6 编程实现 mesg 功能 3 3 实验内容实验内容 1 联机帮助查阅 mesg 功能 这个命令主要实现不想被其他用户在同一台服务器上发送 文本打扰 这里需要了解用户所在终端的属性获取以及重新设置功能 2 对于 unix linux 编程不只是实现 更需要对代码进行优化 所以学生需要加强 C 语 言的学习 在该实验中强调代码优化 尽量使程序更简洁 运行效率更高 在编写 代码完成后 对所写代码进一步检查 把不必要的变量和过程去掉 循环终止条件 可更灵活 同时要求学生对 main 的形参传入非常熟悉 3 因为 unix linux 环境下的程序调试不如 windows 系统编程方便 所以要充分利用 gdb 调试器 在编译程序完成形成执行程序后 打开 gdb 实时调试器 可以跟踪源代码 中的任何一行代码 可实时查看每一个变量的值 重复单步调试 继续运行 设置 断点等步骤 9 3 4 实验步骤实验步骤 1 联机查看 mesg 原理及目的 查阅用户终端获取函数以及设置函数 2 设计 mesg 实现的程序框架 3 选定编辑器 根据程序框架输入代码 4 在编译时加入可调试功能 编译程序形成执行程序 5 打开 gdb 调试器 进入调试 6 给出调试步骤 实现单步调试 重新运行 设置断点等调试功能 7 给出源代码程序 实现响应功能 8 编写实验报告 3 5 实验提示实验提示 Windows 系统下的调试非常简单 但是在 unix linux 环境下的调试有些困难 需要 学生有坚实的编程基础以及良好的逻辑思维能力 这里需要注意的有 1 编译形成执行程序的调试参数设置 g g o test test cpp g 执行程序可调试 2 gdb 调试器的使用 gdb test s 单步调试 r 重新运行 b 设置断点 h 帮助 quit 退出 p 打印输出 10 实验四 进程控制编程 4 1 实验目的实验目的 1 在 unix linux 环境下如何创建进程 2 如何结束进程 3 如何进行进程通信 4 如何控制 unix 系统的进程 5 进程间的逻辑控制关系 6 熟悉进程有关函数 4 2 实验要求实验要求 1 能够创建进程 2 能够编写进程结束工作 3 实现进程间通信中的数据共享 4 实现进程间的逻辑控制关系 5 扩展教材的 waitdemo2 c 功能 建立两个进程 设计如何等待两进程都结束 6 编程实现进程辨认功能 4 3 实验内容实验内容 1 联机帮助查阅 fork 函数 fork 函数能够创建进程 返回值如果为 0 则表示程序运 行在子进程中 如果不为 0 则运行在父进程中 等待结束函数为 wait if return fork id1 int return fork id2 fork else 2 如何等待子进程结束 wait 12 实验五 关于 more 的终端控制编程 5 1 实验目的实验目的 1 unix linux 终端驱动程序的属性如何获取 2 如何重新设置终端驱动程序的无回显属性 3 如何设置终端驱动程序的非规范模式 4 了解 unix linux 中系统信号统一管理模式 5 信号中断控制方法编程 6 改进 more02 c 程序 实现终端驱动程序的无回显非规范模式编程 5 2 实验要求实验要求 1 能够获取 unix linux 终端驱动程序的属性 2 能够重新设置终端驱动程序的无回显属性 3 能够设置终端驱动程序的非规范模式 4 完全掌握系统信号统一管理模式 signal 函数 5 能够在有信号中断时截获信号实现控制编程 6 实现 more02 c 改进程序 实现终端驱动程序的无回显非规范模式编程 5 3 实验内容实验内容 1 查阅联机帮助 终端驱动程序的规范模式和非规范模式的编程实现 对各种情况下 的两种模式进行分析 2 设计系统信号中断下的处理函数 以 SIGINT 为例 这是用户从终端发起的 ctrl c 命 令 被程序截获后 可以进行处理或忽略 3 改进 more02 c 程序 实现显示过程中无回显非规范 并且能够对中断产生响应或忽 略操作 5 4 实验步骤实验步骤 1 联机查看无非规范和规范模式工作原理 2 事先给出 more02 c 改进流程图 能够实现无回显非规范模式 及时响应中断 3 编程实现 more02 c 的改进程序 13 4 编译源代码运行成功 5 编写实验报告 5 5 实验提示实验提示 终端驱动程序的规范模式和非规范模式编程需要对终端驱动属性非常了解 能够获 取属性和修改属性 另外中断控制处理需要建立控制函数 1 终端驱动程序的属性获取和设置函数 tcgetattr int struct termios tcsetattr int int struct termios 2 中断信号处理 signal int signum void action int 14 实验六 终端窗口大小改变的响应编程 6 1 实验目的实验目的 1 了解 unix 系统的终端窗口大小改变信号 2 熟悉终端窗口大小发生改变时可以作出响
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市轨道交通项目投资合同签订与融资流程图
- 景观公园租赁合同范本(含设施维护及环境治理)
- 绿色能源项目私人合伙股权分配与环保责任协议
- 教育机构线下校区扩建2025年信息化建设与智能化应用分析报告
- 直播带货主播与电商品牌签约的代言合同范本
- 电子合同在供应链金融中的法律效力与风险控制
- 私立幼儿园教师聘用合同中的家长满意度提升协议
- 分布式系统校验机制研究-洞察及研究
- 拓扑绝缘体在热电转换中的应用-洞察及研究
- 宠物医疗合作模式-洞察及研究
- 《草帽是父亲的徽饰》阅读练习
- 输变电工程钢管杆吊装组立工程施工方案和措施方案
- 工贸企业主要负责人和安全管理人员安全培训演示文稿
- 狮子王中英文台词对照(超全的完整版)(英语口语练习必备)
- HP碗式中速磨煤机检修教程
- 办公室一族常见病预防
- 精神科诊疗常规及技术操作规范-
- 人教版小学六年级上册语文单元测试卷全册
- DB37T 3842-2019 铁矿绿色矿山建设规范
- 《农业园区规划与管理》课件第一部分 03
- 江苏常熟新材料产业园环境风险评估报告
评论
0/150
提交评论