版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VFS系统调用,1.open系统调用功能:获取允许访问的文件标识符。调用格式:intopen (constchar * path,intflags,mode _ tmode);*path参数是指定路径flags参数的打开方式。典型的访问模式包括:O_RDONLY只读O_WRONLY只读写O_RDWR读写模式位或使用“|”以使用以下标志的任意组合:O_APPEND附加数据o _ trunc o _ execl o _,调用VFS系统,调用VFS系统1.open系统mode调用文件所有者、文件用户组和其他用户:S_IRUSR读取权限,文件主S _ IWUSRr : read w : write x
2、 3360 execute usr gr poth,VFS系统调用,带1.open系统调用的头文件:#include #include #include,使用示例1 open,示例此文件具有文件主可读写执行、用户组可读写和其他可执行权限。# define MODE 0761/s _ irw Xu | s _ irgrp | s _ iw grp | s _ IX oth open(文件2,o _ wronly |示例3中的ora此文件具有文件主可读写可执行、用户组可读取、其他可执行权限。# define MODE 0741/s _ irw Xu | s _ IR grp | s _ IX ot
3、h open(文件3,o _ wronly | o _ creat |,vvsFd是打开文件时系统返回的文件标识符。使用的头文件:#include,VFS系统调用,2.close系统调用过程:系统执行系统调用时,根据FD值在进程的进程打开文件表中查找FD id,根据指针查找系统打开文件表,然后在内存I节点表中查找相应的I节点,减少i_count,调用成功返回0,失败返回-1。注意:对于标准输入/输出/错误文件,默认文件标识符为0.1.2,因此调用close(0)时,请关闭标准输入设备,释放标识符0,然后重新分配。# include # includemain () intfd1,fd2Fd1=
4、open(文件1,o _ wronly | o _ trunc | o _ creat,0666);Fd2=open(文件2,o _ wronly | o _ trunc | o _ creat,0666);Printf (first: fd1=% d,fd2=% dn,fd1,fd2);关闭(fd1);关闭(fd2);关闭(0);Fd1=open(文件1,o _ wronly);关闭(2);Fd2=open(文件2,o _ rdonly);Printf (first: fd1=% d,fd2=% dn,fd1,fd2);实例4程序分为两个阶段。首先创建两个文件文件文件文件1和文件2,导出文件
5、标识符,然后关闭。输出结果通常从3日开始分配系统为流程打开的文件标识符(0-2占用标准文件)。然后,使用程序中的“关闭文件”操作打开标准输入0和标准错误文件2,重新打开文件1和文件2,导出文件标识符,然后关闭。输出结果表明,禁用0-2后,可以将该编号重新分配给其他文件。因此,重新打开文件文件1时,标识符为零。VFS系统调用,3.read系统调用格式:intread (intfd,void * buf,size _ t nbytes);Fd开放文件系统调用返回的文件标识符buf指定缓冲区nbytes用于读取的字节数的头文件:#include #include,VFS系统调用,3.read系统调用
6、功能:从指定文件将指定长度的内容读取到指定缓冲区。VFS系统调用,4.write系统调用格式:intwrite (intfd,void * buf,size _ t nbytes);Fd为打开的文件系统调用返回的文件标识符buf为指定缓冲区nbytes调用要读取的字节数的功能。将指定的数据以指定的大小写入指定的文件。,示例6程序如下所示:# include # include main()charbuffer 128;Int numNum=读取(0,buffer,128);If(write(1,buffer,num)!=num) write (2,a write error has occur
7、red n,27);退出(0);VFS系统调用、VFS系统调用5.lseek系统调用功能:随机读取和写入文件。调用格式:off _ t lseek (intfd,off _ t offset,intwhence);Offset是文件偏移,为旧主地址提供新的文件偏移值。whence可以使用以下值之一:SEEK_SET定义为0,文件读写指针设置为offset指定的值。SEEK_CUR定义为1,文件读写指针设置为当前读写指针值加offset指定的值,文件读写指针设置为文件大小加offset指定的值,VFS系统调用,5.lseek系统调用返回值:文件指针新位置使用的头文件:#include #incl
8、ude 0)文件指针位于文件末尾:lseek (fs,OL,0)获取文件指针的当前位置:lseek(fs,ook),# include # include # define maxsize ize char * buf=hello!Im writing to this file!Char buf _ r10len=strlen(buf);If (FD=open (/tmp/hello.c,o _ creat | o _ trunc | o _ rdwr,0666) 0)结束perrorElseprintf(开放文件: hello.c% dn,FD);If (size=write (FD,buf
9、,len)0)perror(write 3360);退出(1);Elseprintf(Write:%sn,buf) : Lseek(fd,0,SEEK _ SET);If (size=read (FD,buf _ r,15) 0)周期(read 3360);退出(1);else printf(read from file :% sn,buf _ r);if(close(FD)0)perror(close :);退出(1);else printf(Close);退出(0);示例7假定当前目录中包含26个字母字符的文件文件。程序将指针移动到第10个字符,以便从第11个字符到最后一个字符输出指针。#
10、 include # includemain (intargc,char * argv)intfd;char c;Fd=open(argv1,O _ RDONLY);Lseek(fd,10,SEEK _ SET);While(read(fd,VFS系统调用,6.chown系统调用角色:修改文件所有者的id或组id,仅限超级用户使用)。调用格式:intchown (char * pathname,uid _ towner,GID _ tgroup);Pathname为被操纵文件的路径名owner和group分别提供文件所有者ID和组ID。如果Owner或group值为-1,则文件的标识符保持不变
11、,并且在只读文件系统中chown文件时,调用将失败。VFS系统调用,6.chown系统调用功能:执行chown后,原始文件所有者可能会因文件主节点的更改而丢失对文件的访问。实际上,此调用更多地用于更改文件的组ID,并实现文件组之间的转换,以便多个用户可以控制同一文件。使用的头文件:#include #include,VFS系统调用,7.chmod系统调用格式:intchmod (char * pathname,mode _ t mode);Mode是文件的访问权限,如头文件/usr/src/Linux-2.4/include/Linux/stat . h中所述。注意:调用chmod的进程的有效用户必须是超级用户或文件所有者。否则,调用将失败。权限也可以使用数字方法设备,但必须先使用以下语句定义权限:#define MODE权重使用的头文件:#include #include,对VFS的系统调用,8.fcntl系统调用的作用:第一,设置文件的访问标志,主要是open和FFS,另一个是锁定文件。主要由chmod和fcntl调用实现。调用格式:int fcntl(int fd,int cmd,long arg);Cmd是描述要执行的功能的控制命令。例如,8使用fcntl系统调用文件锁定并检
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学试题(社会学)-职业素养职业素养养成历年参考题库含答案解析
- 2026年安徽中澳科技职业学院高职单招笔试化学历年参考题库含答案解析
- 2026年大学试题(林学)-园林建筑设计历年参考题库含答案解析
- 2026年太原幼儿师范高等专科学校高职单招笔试物理历年参考题库含答案解析
- 2026年大学试题(教育学)-教育督导学历年参考题库含答案解析
- 2026年大学试题(大学选修课)-在历史的坐标下解析日本历年参考题库含答案解析
- 2026年四川邮电职业技术学院高职单招笔试英语历年参考题库含答案解析
- 经信局消防安全培训方案
- 系统性红斑狼疮SLE
- 2026年电缆证考试题库及答案
- 灯箱维修施工方案
- 读后续写题型讲解课件-高中英语人教版第一册
- 铁路防断培训课件
- 2025年gsp药品批发企业质量风险管理试题及答案
- 药物制剂技术专业教学标准(高等职业教育专科)2025修订
- 泡沫厂生产管理制度
- 《经济法基础》 (第2章) 第一章 总论
- 《海康威视使用说明》课件
- 创新方法大赛理论知识考核试题题库及答案
- 松下-GF2-相机说明书
- 机电样板段配合方案及计划
评论
0/150
提交评论