交大继续教育学院操作系统实验3参考答案

交大继续教育学院操作系统实验3参考答案

ID:42117785

大小:168.35 KB

页数:11页

时间:2019-09-08

交大继续教育学院操作系统实验3参考答案_第1页
交大继续教育学院操作系统实验3参考答案_第2页
交大继续教育学院操作系统实验3参考答案_第3页
交大继续教育学院操作系统实验3参考答案_第4页
交大继续教育学院操作系统实验3参考答案_第5页
资源描述:

《交大继续教育学院操作系统实验3参考答案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三文件系统的用户界面参考答案(一)实验目的进一步理解、使用和掌握文件的系统调用、文件的标准子例程,能利用和选择这些基本的文件操作完成复杂的文件处理工作。(二)源代码1.编写一个文件复制的c语言程序:分别使用文件的系统调用和文件的库函数fread(buf,read(fd,buf,nbytes),write(fd,size,nitems,fp),fwrite(buf,buf,nbytes)size,nitems,fp),编写一个文件的复制程序。再计算两者之差下面的程序是调用time分别获得程序段运行的开始时间和结束时间,获得程序段

2、运行的时间。当然最方便的方法是在所运行的程序前面加上time,其运行方法是:time命令[命令参数]命令执行完成后,time程序显示命令运行所用的总时间,系统花费的时间和命令的纯执行时间,UNIX中单位为10毫秒,Linux中单位为毫秒。但这种方法得到的是程序运行的总时间,而不能得到某一程序段的运行时间。#include#inelude#inelude/*copyfile,ifway==1,useread/write,elseusefread/fwrite,atthesame

3、time,itcountstimeconsumed*/intmycopy(intway,intstep){time_tstart_tm,stop_tm:FILE*srcf,*destf;charbuff[4096];inti,sfd,dfd;time(&start_tm);//获得起始时间for(i=0;i<1024;i=i+step){if(way==1){sfd=open(nin.txr,O_RDONLY,0644);//输入文件dfd=open(nout.txtM,O_WRONLY

4、O_CREAT

5、O_TRUNC,0644)

6、;//输出文件read(sfd,buff,step);write(dfd,buff,step);close(sfd);close(dfd);}else{srcf=fopen(Hin.txtH,HrH);destf=fopen(Hout.txtH,nwH);fread(buff,step*sizeof(char),1,srcf);fwrite(buff,step*sizeof(char),1,destf);close(srcf);close(destf);time(&stop_tm);//获得结束时间printf("timeus

7、edforcopyfilebymeansof%s,%dbytepertime:%dsH,way?Hread,writeH:Hfread,fwriteH,step,(int)(stop_tm-start_tm));//printinformationfortestingreturn0;intmain(intargc,char**argv)/*当上述函数中nbytes,size和nitems都取值为1时(即一次读写一个字节),比较这两种程序的执行效率。*/if(mycopy(1,1))return1;if(mycopy(0,1))re

8、turn1;/*当nbytes取1024字节,size取1024字节,且nitems取1时(即一次读写1024字节),再次比较这两种程序的执行效率。*/if(mycopy(1,1024))return1;if(mycopy(0,1024))return1;return0;}2.编写一个父子进程之间用无名管道进行数据传送的C程序。父进程逐一读出一个文件的内容,并通过管道发送给子进程。子进程从管道中读出信息,再将其写入一个新的文件。程序结束后,对原文件和新文件的内容进行比较。#include#include

9、ng.h>#includeintmain(intargc,charargc){intsfd,dfd,n,chan[2];charbuff[1024];sfd=open(nin.txtH,O_RDONLY,0644);//输入文件dfd=open(Hout.txr,O_WRONLY

10、O_CREAT

11、O_TRUNC,0644);pipe(chan);//openapipeif(fork()){//startachildprocesstosendfilewhile((n=read(sfd,buff,1024))>0){

12、close(chan[0]);write(chan[1],buff,n);close(chan[1]);}}else{//infatherprocess,receivefileclose(chan[1]);read(chan[0],buf,1024

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。