资源描述:
《实验四 Linux下的C语言编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四Linux下的C语言编程四、实验内容本实验要求在LINUX/UNIX环境下用C语言编写三个具体的SHELL命令,基本涉及了LINUX/UNIX文件系统中较为常用的有关文件操作的系统调用。内容如下:1、编程实现copy命令。执行格式:copyfile1file2file3功能:将file1、file2两文件的内容合并拷入file3中,其中间应有30个字节的空洞(调试成功后可将空洞调大到几十MB)。程序执行后用du命令显示其占用磁盘空间,观察其大小,分析原因。程序可能涉及到的系统调用:read(),wri
2、te(),open(),creat(),close(),lseek()#include#include#include#include#include#include#includeintmain(intargc,charconst*argv[]){intfile1,file2,file3;if(argc!=4){printf("Usage:copyfile1fil
3、e2file3");exit(1);}file1=open(argv[1],O_RDONLY);file2=open(argv[2],O_RDONLY);file3=open(argv[3],O_CREAT
4、O_RDWR,S_IRWXU);intn;charbuf[1024];while((n=read(file1,buf,1024))>0)if(write(file3,buf,n)!=n)printf("writeerror");if(n<0)printf("read%serrorErrno=
5、%d",argv[1],errno);if(lseek(file3,30,SEEK_END)==-1)printf("lseekerror");while((n=read(file2,buf,1024))>0)if(write(file3,buf,n)!=n)printf("writeerror");if(n<0)printf("read%serrorErrno=%d",argv[2],errno);exit(0);close(file1);close(file2);close(file3)
6、;printf("success");return0;}2、编程实现renam(即LINUX下的rename)命令,功能是实现文件的重命名。执行格式:renamfileafileb;其中filea为源文件,fileb为目标文件。程序执行时应显示出命令行的所有参数,并给出重命名前后两个文件的大小、索引节点号及最近一次状态改变的时间。程序可能涉及到的系统调用:read(),write(),open(),stat(),close(),link(),unlink()#include#in
7、clude#include#include#include#includeexterninterrno;intmain(intargc,constchar*argv[]){structstatbuf1,buf2;if(argc!=3){printf("Usage:renameoldfilenewfile");exit(1);}if(stat(argv[1],&buf1)==-1){printf("starerro
8、rerrnois%d",errno);exit(1);}printf("使用stat()显示文件%s的信息",argv[1]);printf("%s大小-->%d",argv[1],(int)buf1.st_size);printf("%s索引节点号-->%d",argv[1],(int)buf1.st_ino);printf("%s最后一次修改时间-->%d",argv[1],(int)buf1.st_mtime);printf("-------------------------
9、-------------------------");if(rename(argv[1],argv[2])==-1){printf("renameerrorErrno%d",errno);exit(1);}printf("-------------------renamesuccess------------------");if(stat(argv[2],&buf2)==-1){printf(