实验七文件管理(二)

实验七文件管理(二)

ID:1657413

大小:1.44 MB

页数:4页

时间:2017-11-12

实验七文件管理(二)_第1页
实验七文件管理(二)_第2页
实验七文件管理(二)_第3页
实验七文件管理(二)_第4页
资源描述:

《实验七文件管理(二)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、湖北工业大学工程技术学院实验报告课程名称:操作系统实验内容:实验七文件管理(二)学院:工程技术学院专业班级:11gb软件2班教师:贺红艳成绩:一、实验目的1、掌握Linux文件系统的基本原理、结构和实现的方法。2、掌握Linux文件系统中文件的建立、打开、读写、执行、属性等系统调用的使用二、相关函数1、intcreat(constchar*filename,mode_tmode)mode:创建模式(指定文件的属性)可以直接用数字表示文件的访问权限filename:要创建的文件名(包含路径,缺省为当前路径)2、intopen(constchar*pathn

2、ame,intflags)intopen(constchar*pathname,intflags,mode_tmode)pathname:要打开的文件名flags:打开标志O_RDONLY只读方式打开O_WRONLY只写方式打开O_RDWR读写方式打开O_APPEND追加方式打开O_CREATE创建一个文件O_NOBLOCK非组塞方式打开当使用O_CREATE标志时,则使用第二个函数,即三个参数的。需要使用mode来指定文件的访问权限。3、文件关闭intclose(intfd)fd:文件描述符(打开文件时,由系统分配)4、intread(intfd,co

3、nstvoid*buf,size_tlength)从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。5、intwrite(intfd,constvoid*buf,size_tlength)把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。6、intlseek(intfd,offset_toffset,intwhence)将文件读写指针相对whence移动offset个字节。操作成功时,返回文件指针相对于文件头的位置。(可以利用lseek计算文件长度l

4、seek(fd,0,SEEK_END))whence可用以下值描述:  SEEK_SET:相对文件开头  SEEK_CUR:相对文件读写指针的当前位置  SEEK_END:相对文件末尾offset可取负值,表示向前移动。三、实验步骤1、编写一段C语言程序,使其完成:对用户输入的文件内容进行拷贝。例如用户输入:./copyaFilebFile,(如果目标文件名为copy)则将文件aFile的内容拷贝到文件bFile中。#include#includemain(intargc,char*argv[]){intfd1,fd

5、2,n;charbuf[512];if(argc<3){printf("参数太少");exit(0);}if((fd1=open(argv[1],0))<0){printf("openerror");exit(0);}if((fd2=creat(argv[2],0644))<0){printf("createerror");exit(0);}n=read(fd1,buf,512);write(fd2,buf,n);close(fd1);close(fd2);}2、编写一段C语言程序,使其完成:创建一个新文件,输入一段数据,然后随机移动指针,接

6、着插入一段数据,完成后,查看该文件的大小和内容。(程序运行完成后,使用ls–ltest命令可以显示文件的实际大小,然后使用od–ctest命令显示文件的内容)#include#includecharbuf1[]="abcde";charbuf2[]="12345";main(){intfd;if((fd=creat("test",0644))<0){printf("createfileerror");exit(0);}write(fd,buf1,5);lseek(fd,30,SEEK_SET);write(fd,

7、buf2,5);close(fd);}3、阅读以下程序,并运行,写出运行结果,并分析程序的功能。#include #includemain(){  int fd,a[10],i;for( i=0; i<10;i++)a[i]=i+1;fd=creat(“abc”,0755);printf(“lock 40 bytes in parent…”);lockf(fd,1,40);printf(“…locked ”);fflush(stdout); if(fork()==0){printf(“enter child,

8、write 20 bytes.”);  write(fd,a,10);pri

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

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

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