操作系用实验3参考答案

操作系用实验3参考答案

ID:39190597

大小:77.51 KB

页数:7页

时间:2019-06-26

操作系用实验3参考答案_第1页
操作系用实验3参考答案_第2页
操作系用实验3参考答案_第3页
操作系用实验3参考答案_第4页
操作系用实验3参考答案_第5页
资源描述:

《操作系用实验3参考答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三文件系统的用户界面参考答案(一)实验目的进一步理解、使用和掌握文件的系统调用、文件的标准子例程,能利用和选择这些基本的文件操作完成复杂的文件处理工作。(二)源代码1.编写一个文件复制的C语言程序:分别使用文件的系统调用read(fd,buf,nbytes),write(fd,buf,nbytes)和文件的库函数fread(buf,size,nitems,fp),fwrite(buf,size,nitems,fp),编写一个文件的复制程序。#include#include#include/*

2、copyfile,ifway==1,useread/write,elseusefread/fwrite,atthesametime,itcountstimeconsumed*/intmycopy(intway,intstep){time_tstart_tm,stop_tm;FILE*srcf,*destf;charbuff[1024];inti,sfd,dfd;time(&start_tm);//getstarttimefor(i=0;i<1024;i=i+step){if(way==1){sfd=open("in.txt",O_RDONLY,064

3、4);dfd=open("out.txt",O_WRONLY

4、O_CREAT

5、O_TRUNC,0644);read(sfd,buff,step);write(dfd,buff,step);close(sfd);close(dfd);}else{srcf=fopen("in.txt","r");destf=fopen("out.txt","w");fread(buff,step*sizeof(char),1,srcf);fwrite(buff,step*sizeof(char),1,destf);close(srcf);close(destf);}}t

6、ime(&stop_tm);//getstoptimeprintf("timeusedforcopyfilebymeansof%s,%dbytepertime:%ds",way?"read,write":"fread,fwrite",step,(int)(stop_tm-start_tm));//printinformationfortestingreturn0;}intmain(intargc,char**argv){/*当上述函数中nbytes,size和nitems都取值为1时(即一次读写一个字节),比较这两种程序的执行效率。*/if(my

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

8、ude#include#includeintmain(intargc,charargc){intsfd,dfd,n,chan[2];charbuff[1024];sfd=open("in.txt",O_RDONLY,0644);dfd=open("out.txt",O_WRONLY

9、O_CREAT

10、O_TRUNC,0644);pipe(chan);//openapipeif(fork()){//startachildprocesstosendfilewhile((n=read(sfd,buff,

11、1024))>0){close(chan[0]);write(chan[1],buff,n);close(chan[1]);}}else{//infatherprocess,receivefileclose(chan[1]);read(chan[0],buf,1024);write(dfd,buff,strlen(buff));close(chan[0]);}close(sfd);close(dfd);return0;}3.在两个用户的独立程序之间,使用有名管道,重新编写一个C程序,实现题3的功能。#include#include<

12、string.h>#include#includeintmain(

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

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

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