第4章文件系统实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参数:
1.用于接收数据的地址(指针)(buffer)
2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节
3.元素个数(count)
4.提供数据的文件指针(stream)
返回值:读取的元素的个数
(3)
通过strstr()函数将找出cpu MHz在buffer出现的位置,为之后的提取值做准备
1.切换用户
2.建立文件,并查看文件
3.创建软连接ຫໍສະໝຸດ 4.查看创建结果5.查看结果
6.修改test
7.查看结果
分析结果
(1)创建链接后,读取test1的时候,由于链接的原因,实际上读取到的是test的内容,所以读取test.txt和test01时显示的内容是一样的。修改test之后,test01也会跟着改变,显示了同步性。
format格式控制字符串
argument选择性设定字符串
sscanf会从buffer里读进数据,依照argument的设定将数据写回。
三、实现文件的拷贝,即把一个文件内容复制到另一个文件
1.创建文件
2.编译代码
3.运行
4.创建t1,t2
5.运行copy代码
6.查看结果
7.删除t1
8.查看t2
结果分析:
strstr()
包含文件:string.h
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。
(4)
通过sscanf语句提取cpu的时钟频率
操作系统课程实验报告
姓名
学号
系
计算机科学与技术
任课教师
贺辉
指导教师
贺辉
评阅教师
贺辉
实验地点
实验时间
实验编号与实验名称:
实验目的:
熟悉文件和目录的基本操作;了解Linux的/proc文件系统
实验内容及要求(详见实验讲义):
1)在/usr目录下创建一个目录usr_test和文本文件mytest,并建立一个mytest文件的链接test02。通过修改test文件中的内容查看test和test02中内容的情况,并分析原因。
2)编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)
3)实现文件的拷贝,即把一个文件内容复制到另一个文件
实验用到的软件(:)
C-Free,linux,word
实验内容、关键步骤(流程图、代码等)及结果分析(70分)
一、在/usr目录下创建一个目录usr_test和文本文件mytest,并建立一个mytest文件的链
(2)link命令会保持链接文件的同步性
(3)这种连接方式属于软链接,软链接指挥在你选定的位置上生成一个镜像文件
二、编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)
1.使用cat /proc/cpuinfo查询本机信息,访问内核中的参数、数据结构、和统计数据的方法
sscanf() -从一个字符串中读进与指定格式相符的数据.
函数原型:
int sscanf( const char *, const char *, ...);
int sscanf(const char *buffer,const char *format,[argument ]...);
buffer存储的数据
(1)此链接属于硬链接,即使源文件被修改或者删除都不会影响复制文件
(2)复制代码
for(;;){
bytesread=read(fromfd,buf,BLKSIZE);
bp=buf;
if(bytesread<=0)
break;
byteswritten=write(tofd,bp,bytesread);
2.编译代码
代码解读
(1)申请获得cpu时钟频率信息函数
(2)
通过fread函数,从一个buffer文件流中读数据,最多读取buffer各个项,每个项为1个字节,如果调用成功返回实际读取到的项个数,如果不成功或读到文件末尾返回0。
功能:从一个流中读数据
函数原型: size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);
if(byteswritten<=0)
break;
totalbytes+=byteswritten;
bytesread-=byteswritten;
bp+=byteswritten;
}
通过将读入字节流,及写入字节流将文件读取出来进行复制。使文件保持同步变化
(3)结果验证,文件实现了复制
实验过程中遇到的问题解决办法与实验体会(10分)【请注意:此处必须如实填写,为空或不适均扣10分】
1.用于接收数据的地址(指针)(buffer)
2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节
3.元素个数(count)
4.提供数据的文件指针(stream)
返回值:读取的元素的个数
(3)
通过strstr()函数将找出cpu MHz在buffer出现的位置,为之后的提取值做准备
1.切换用户
2.建立文件,并查看文件
3.创建软连接ຫໍສະໝຸດ 4.查看创建结果5.查看结果
6.修改test
7.查看结果
分析结果
(1)创建链接后,读取test1的时候,由于链接的原因,实际上读取到的是test的内容,所以读取test.txt和test01时显示的内容是一样的。修改test之后,test01也会跟着改变,显示了同步性。
format格式控制字符串
argument选择性设定字符串
sscanf会从buffer里读进数据,依照argument的设定将数据写回。
三、实现文件的拷贝,即把一个文件内容复制到另一个文件
1.创建文件
2.编译代码
3.运行
4.创建t1,t2
5.运行copy代码
6.查看结果
7.删除t1
8.查看t2
结果分析:
strstr()
包含文件:string.h
函数原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。
(4)
通过sscanf语句提取cpu的时钟频率
操作系统课程实验报告
姓名
学号
系
计算机科学与技术
任课教师
贺辉
指导教师
贺辉
评阅教师
贺辉
实验地点
实验时间
实验编号与实验名称:
实验目的:
熟悉文件和目录的基本操作;了解Linux的/proc文件系统
实验内容及要求(详见实验讲义):
1)在/usr目录下创建一个目录usr_test和文本文件mytest,并建立一个mytest文件的链接test02。通过修改test文件中的内容查看test和test02中内容的情况,并分析原因。
2)编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)
3)实现文件的拷贝,即把一个文件内容复制到另一个文件
实验用到的软件(:)
C-Free,linux,word
实验内容、关键步骤(流程图、代码等)及结果分析(70分)
一、在/usr目录下创建一个目录usr_test和文本文件mytest,并建立一个mytest文件的链
(2)link命令会保持链接文件的同步性
(3)这种连接方式属于软链接,软链接指挥在你选定的位置上生成一个镜像文件
二、编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)
1.使用cat /proc/cpuinfo查询本机信息,访问内核中的参数、数据结构、和统计数据的方法
sscanf() -从一个字符串中读进与指定格式相符的数据.
函数原型:
int sscanf( const char *, const char *, ...);
int sscanf(const char *buffer,const char *format,[argument ]...);
buffer存储的数据
(1)此链接属于硬链接,即使源文件被修改或者删除都不会影响复制文件
(2)复制代码
for(;;){
bytesread=read(fromfd,buf,BLKSIZE);
bp=buf;
if(bytesread<=0)
break;
byteswritten=write(tofd,bp,bytesread);
2.编译代码
代码解读
(1)申请获得cpu时钟频率信息函数
(2)
通过fread函数,从一个buffer文件流中读数据,最多读取buffer各个项,每个项为1个字节,如果调用成功返回实际读取到的项个数,如果不成功或读到文件末尾返回0。
功能:从一个流中读数据
函数原型: size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);
if(byteswritten<=0)
break;
totalbytes+=byteswritten;
bytesread-=byteswritten;
bp+=byteswritten;
}
通过将读入字节流,及写入字节流将文件读取出来进行复制。使文件保持同步变化
(3)结果验证,文件实现了复制
实验过程中遇到的问题解决办法与实验体会(10分)【请注意:此处必须如实填写,为空或不适均扣10分】