实验七文件管理(二_第1页
实验七文件管理(二_第2页
实验七文件管理(二_第3页
实验七文件管理(二_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、nt open( const char *pathname,int flags)int open( const char *pathname,int flags, mode_t mode)path name:要打开的文件名flags :打开标志O_RDONLY只读方式打开O_WRONLY只写方式打开O_RDWR读写方式打开O_APP END追加方式打开O_CREATE创建一个文件O_NOBLOCK非组塞方式打开当使用O_CREATE标志时,则使用第二个函数,即三个参数的。需要使用mode来指定文件的访问权限。3、文件关闭int close( int fd)fd :文件描述符(打开文件时,由系统

3、分配)4、int read( int fd, const void *buf, size_t length)从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。fd, const void *buf, size_t le ngth)buf指向的缓冲区中写到文件描述符 fd所指向的文件中,返回值为5、int write( int把length个字节从fd, offset_t offset,whenee 移动 offset实际写入的字节数。int whe nee)个字节。操作成功时,返回文件指针相对于文6、int lseek( int将文件读写指

4、针相对件头的位置。(可以利用Iseek 计算文件长度lseek(fd, 0, SEEK_END)whenee可用以下值描述:SEEK_SET:相对文件开头SEEK_CUR:相对文件读写指针的当前位置三、实验步骤1、编写一段C语言程序,使其完成:对用户输入的文件内容进行拷贝。例如用户输入: ./copy aFile bFile,(如果目标文件名为copy)则将文件aFile的内容拷贝到文件 bFile中。#i nclude#in cludemain (i nt argc,char *argv)int fd1,fd2, n;char buf512;if(argc3)printf(参数太少 n);e

5、xit(0);if(fd1=o pen (argv1,0)0)printfCopen error n);exit(0);if(fd2=creat(argv2,0644)0)prin tf(create error n);exit(0);n=read(fd1,buf,512);write(fd2,buf, n);close(fdl);close(fd2);roollocaI bos t ToollocaIhos t bash: ./copy.c: roollocaI bos t bash: .copy.c:reel# gcc -fl copy copy.c root# i/copy.c 权限不輛

6、 root# cflCDimund no t foundroo Lt oo I fl Icopy* bash: copy.CT comnd not found roo lLoch I tio& t r oo t J fl / copy bash: /copy :设IT个文打疵11录 roollocaI bos t root# ./copy canshu la i stiao Icroolliod t fool#2、编写一段 C语言程序,使其完成:创建一个新文件,输入一段数据,然后随机移动指针,接着插入一段数据,完成后,查看该文件的大小和内容。(程序运行完成后,使用Is -test命令可以显示文

7、件的实际大小,然后使用od -c test命令显示文件的内容)#i nclude#in cludechar buf1=abcde;char buf2=12345;main ()int fd;if(fd=creat(test,0644)0)prin tf(create file errorn);exit(0);write(fd,buf1,5);lseek(fd,30,SEEK_SET);write(fd,buf2,5);close(fd);f roo tJoca Ihos l f roo 倔Jocalho illios Icrea le file er rorroQ 11# rooi1# roo

8、ilflV im le s t . cgcc -o les: tes I +c ./ les IrootlocaIhosl rooL13、阅读以下程序,并运行,写出运行结果,并分析程序的功能。#i nclude #in clude main () int fd,a10,i;for( i=0; i10;i+)ai=i+1; fd=creat( “ abc ” ,0755);pnntf(“ locibytes in parent );lockf(fd,1,40);printf( “locked );fflush(stdout);n );if(fork()=0) prints“ en terwrit

9、e(fd,a,10);printswrite” );fflush(stdout);printf(k 801 bytes in child ” )flush(stdout);lockf(fd,1,80);prints“lockedn” );fflush(stdout);slee p(2);lockf(fd,0,80);pnntf(uniockedn”);fflush(stdout);exit(0);pnntf(“ parentn );slee p(10);prints“ parentn );prints“ parentn”);fflush(stdout);lockf(fd,0,40);print

10、sparentn”);fflush(stdout);wait(0);exit(0);(rooilocaIbosI roo ilorij Ihds L TOO画or日Ihos L bash: .le511.c: f roo tloica Ihos Lrood# vim les i Herood# gee -心 les 11 tes 11 .c root# . tes 11 * ccomnind not foundroot# . /te s 11lock 40 bytes in pareni . locked enicr eh i Id i te 20 by teji. *wr i If II *lock

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论