资源描述:
《Linu某系统cp命令实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、计算机操作系统练习一:实现cp命令计算机操作系统练习一:实现cp命令练习要求实现:Linux的cp命令,完成文件的拷贝。基本思路是打开源文件,并创建目标文件;然后从源文件中读取数据并写入到目标文件中。1、用read&write实现•设置缓存为1B和8192B•分别记录两种缓存方式去拷贝一指定文件(大于1MB)所需要的时间,并分析为什么会有区别。2、用fread&fwrite实现•设定缓存为8192B,记录拷贝指定文件所需要的时间,并与用read&write实现程序(缓存为8192B)进行比较,分析为什么会有区别。实现环境VMware8.0.2虚拟机里面的Ce
2、ntOS版Linux系统,为该虚拟机分配内存1GB,分配硬盘20GB实现代码1、cpbyreadwrite.c#include#include#include#include"timing.h"//#defineBUFSIZE1#defineBUFSIZE8192//通过设置BUFSIZE的大小来设置缓存大小intmain(intargc,char*argv[]){structtimevalstart;gettimeofday(&start,NULL);if(argc<3)//如果输入不合法{prin
3、tf("Pleaseinputrightwords!");return1;}charbuf[BUFSIZE];1计算机操作系统练习一:实现cp命令char*target=(char*)malloc(strlen(argv[1])+strlen(argv[2])+2);//目标目录连接文件名inti,j,sizeargv2=strlen(argv[2]);for(i=0;i4、argv[1]);++j,++i){target[i]=argv[1][j];}target[i]=' ';intfp=open(argv[1],0);if(fp==-1){printf("Thesourcefile%sisnotexist!",argv[1]);return1;}inttd=creat(target,1);if(td==-1){printf("Error!Thetargetfilecan'tbecreat!");return1;}intn=-1;while((n=read(fp,buf,BUFSIZE))>0)//复制{write
5、(td,buf,n);}close(fp);close(td);printf("Copycosttime:%ldmicroseconds.",usdiff(start));return0;}2、cpbyfreadfwrite.c#include#include#include#include"timing.h"2计算机操作系统练习一:实现cp命令#defineBUFSIZE8192intmain(intargc,char*argv[]){structtimevalstart;gettimeofda
6、y(&start,NULL);if(argc<3){printf("Pleaseinputrightparameters!");return1;}FILE*sfp,*tfp;sfp=fopen(argv[1],"rb");if(sfp==NULL){printf("Thesource%sisnotexist!",argv[1]);return1;}char*target=(char*)malloc(strlen(argv[1])+strlen(argv[2])+2);//目标目录连接文件名inti,j;for(i=0,j=0;i7、v[2]);++j,++i)target[i]=argv[2][j];if(target[i-1]!='/'){target[i]='/';++i;}for(j=0;j