操作系统实验报告6_第1页
操作系统实验报告6_第2页
操作系统实验报告6_第3页
操作系统实验报告6_第4页
操作系统实验报告6_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、甘肃政法学院本科生实验报告(六)姓名:贾燚学院:计算机科学学院专业:信息管理与信息系统 班级:2010级信管实验课程名称:操作系统试验实验日期:2012年 9 月 20 日指导教师及职称:何珍祥实验成绩:开课时间:2012-2013学年 第一学期甘肃政法学院实验管理中心印制实验题目文件系统的API应用小组合作是 否姓名贾 燚班级2010级信管学 号201081020108一、实验目的(1)理解和掌握文件系统是使用计算机信息系统的重要接口。(2)通过实验学习文件系统的系统调用命令,提高对文件系统实现功能的理解和掌握。二实验环境Windows XP+Linux虚拟机三、实验内容与步骤1.检查文件系

2、统的文件类型UNIX系统文件有如下的分类:普通文件、目录文件、符号链接文件、有名管道文件、字符设备和块设备文件等。文件的分类主要是由其I节点中的i_mode给出。为了能够检查每个文件的类型,Linux系统在sys/stat.h中定义了文件类型structstat,并用宏定义来决定文件的类型,每个宏的参数就是结构stat中的st_mode的值。Linux系统在sys/stat.h中定义了文件类型structstat,其定义如下;可以利用宏来检查给定文件的类型。Struct statdev_t st_dev;ino_t st_ino;mode_t st_mode;nlink_t st_nlink;

3、uid_t st_uid;gid_t st_gid;dev_t st_rdev;off_t st_size;blksize_t st_blksize;blkent_t st_blocks;time_t st_atime;time_t st_mtimes;time_t st_ctime;进入VM虚拟机中,右击屏幕,选择“新建终端”,打开终端,输入命令“vi jy171.c”,新建一个名为“jy171.c”的用来检查给定文件的类型的C语言程序,其程序代码如下图1所示:图1 jy171.c代码用“Esc+:wq”,退出并保存程序“jy171.c”,在终端输入“gcc jy171.c o jy171”

4、对程序进行编译,如果编译没有错误,继续在终端输入“./jy171 /chcase.c”,可以检查chcase.c的文件类型,其运行截图如下图2所示:图2 程序运行截图分析:程序可以检查给定文件的文件类型,其主要代码如下:if(S_IFMT & bf.st_mode)=S_IFREG)ptr=regular;else if(S_IFMT & bf.st_mode)=S_IFDIR)ptr=directory;else if(S_IFMT & bf.st_mode)=S_IFCHR)ptr=character special device;else if(S_IFMT & bf.st_mode)=

5、S_IFBLK)ptr=block special device;else if(S_IFMT & bf.st_mode)=S_IFFIFO)ptr=pipe special device;因为程序中给定的文件是chcase.c,属于基本文件类型,所以程序返回regular。2.Cat命令的简单实现,完成从键盘复制到终端显示器键盘和显示器属于设备文件类,同样可以完成基本的复制。从键盘键入字符串,字符串在显示器显示。进入VM虚拟机中,右击屏幕,选择“新建终端”,打开终端,输入命令“vi jy172.c”,新建一个名为“jy172.c”的用设备文件进行简单的字符串显示的C语言程序,其程序代码如下图

6、3所示:图3 jy172.c代码用“Esc+:wq”,退出并保存程序“jy172.c”,在终端输入“gcc jy172.c o jy172”对程序进行编译,如果编译没有错误,继续在终端输入“./jy172”,然后输入“My name is JY!”,即可看到程序结果,其运行截图如下图4所示:图4 程序运行截图分析:程序由键盘输入,存储到键盘设备里,然后直接通过显示器进行显示。其中0代表标准输入设备,1代表标准输出设备。3.open和creat系统调用的使用,完成文件复制功能通过open和creat等系统调用,从原文件中读取字符串,然后再写入新的文件中。进入VM虚拟机中,右击屏幕,选择“新建终端

7、”,打开终端,输入命令“vi jy173.c”,新建一个名为“jy173.c”的完成文件复制的C语言程序,其程序代码如下图5所示:图5 jy173.c代码用“Esc+:wq”,退出并保存程序“jy173.c”,在终端输入“gcc jy173.c o jy173”对程序进行编译,如果编译没有错误,继续在终端输入“./jy173 YWJ.c jiayi.c”,完成从YWJ.c到jiayi.c的复制,其运行截图如下图6所示:图6 程序运行截图分析:先在/root/JY目录下创建名为“YWJ.c”的原文件,其内容是“My name is JY!”。然后运行jy173.c文件复制的程序,通过open和c

8、reat等系统调用完成从“YWJ.c”到新文件“jiayi.c”的复制,最后用cat命令核查文件是否复制成功。4.利用lseek系统调用移动文件的读写指针NUIX提供文件的顺序存取,也提供文件的随机存取。NUIX把文件看出字符流文件,这类文件只能顺序存取,为此,NUIX提供了随机修改文件的读写指针,以满足用户对文件的随机存取。进入VM虚拟机中,右击屏幕,选择“新建终端”,打开终端,输入命令“vi jy174.c”,新建一个名为“jy174.c”的文件读写指针的C语言程序,其程序代码如下图7所示;用“Esc+:wq”,退出并保存程序“jy174.c”,在终端输入“gcc jy174.c o jy

9、174”对程序进行编译,如果编译没有错误,继续在终端输入“./jy174 ./jy174.c”,即可看到程序运行结果,其运行截图如下图8所示:图7 jy174.c代码图8 程序运行截图分析:该程序是一个利用lseek系统调用移动文件的读写指针,通过文件读写指针定位到184的位置,之后进入循环,从文件中读一个个字符,直到读到文件结尾,返回一个错误吗为止。四、实验过程与分析在做实验的过程中,几种文件的类型,知道了文件系统对于操作系统的重要性,它是操作系统的重要接口。在编译调式程序的过程中,发现了不少的错误。比如:jy171.c中err_ret(“lstat error”) 应改为printf(“lstat error”);S_IFFIFO应改为S_IFFIFO;jy172.c中size of buf应改为sizeof(buf);jy174.c中rgcv应改为argv等错误。但通过不断地调式,程序都正确地运行了,加深了对文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论