资源描述:
《Linux实验报告_大三上》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三普通文件和目录编程1.编写程序mycp.c,实现从命令行读入文件的复制功能,用原始文件系统调用。实验流程图:判断输入main函数参数个数argcargc!=3noExit(0)fd1=Open(argv[1],O_RDONLY);fd2=open(argv[2],O_RDWR
2、O_CREAT);1read(fd1,buf,bufsize);write(fd2,buf,i);if(i!=bufsize)break;实验程序代码://mycp.c#include#include#include<
3、sys/stat.h>#include#definebufsize5intmain(intargc,char*argv[]){intfd1,fd2;inti;charbuf[bufsize];if(argc!=3){printf("argumenterror");exit(1);}fd1=open(argv[1],O_RDONLY);if(fd1==-1){printf("file%scannotopened",argv[1]);exit(1);}fd2=open(argv[2],O_RDWR
4、O_CREAT);i
5、f(fd2==-1){printf("Cannotopenfile%s",argv[2]);exit(1);}while(1){i=read(fd1,buf,bufsize);write(fd2,buf,i);if(i!=bufsize)break;}close(fd1);close(fd2);return0;}Linux环境下运行情况如下:road@ubuntu:~/桌面/work$gcc-ocpcp.croad@ubuntu:~/桌面/work$./cpargumenterrorPleaseuse:cpfile1file2road@
6、ubuntu:~/桌面/work$./cpab其中,a为一文件,b为空文件。2.编写程序mycat.c,实现文件内容的显示,用原始文件系统调用实现。实验流程图:通过main函数从键盘输入命令行Argc=2?No重新输入命令行fd=open(argv[1],O_RDONLY)不等于1报错while((num=read(fd,buffer,99))>0)buffer[num]=' ';printf("%s",buffer);实验源代码如下://mycat.c#include#include#include
7、#include#includeintmain(intargc,char*argv[]){intfd;charbuffer[100];intnum;if(argc!=2){printf("usage:%sfilename",argv[0]);return1;}if((fd=open(argv[1],O_RDONLY))==-1){perror("cannotopenthefile");return1;}while((num=read(fd,buffer,99))>0){
8、buffer[num]=' ';printf("%s",buffer);}close(fd);return0;}Linux环境下运行情况如下:road@ubuntu:~/桌面/work$gcc-omycatmycat.croad@ubuntu:~/桌面/work$./mycatusage:./mycatfilenameroad@ubuntu:~/桌面/work$./mycataiamroad!!!road@ubuntu:~/桌面/work$其中,a为一个文件名。3.1用流文件系统函数重新编写上面的程序。实验流程图:用main命令输入命令行
9、:fcpfilename1filename2argc!=3不为3,提示fd1=fopen(argv[1],"r");打开第一个文件读出数据fd2=fopen(argv[2],"w");打开第二个文件写入数据fread(&buffer,sizeof(char),1,fd1);fwrite(&buffer,sizeof(char),1,fd2);把第一个文件写入第二个文件关闭两个文件描述符用流文件写的文件复制功能函数://fcp.c#include#include#include10、>#includeintmain(intargc,char*argv[]){FILE*fd1,*fd2;charbuffer[20];if(argc!=3){p