Linux文件系统调用.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux文件系统调用.ppt

10.4 文件系统调用 10.4.1 文件描述符 10.4.2 open和close系统调用 10.4.3 read和 write系统调用(在C中是fread和 fwrite) 10.4.4 lseek系统调用(在C中是fseek) 10.4.5 访问和显示文件元数据 10.4.6 目录 10.4.1 文件描述符 特殊文件描述符:进程开始运行时自动打开的三个文件(文件描述符表前三项) 0:STDIN_FILENO 标准输入 1: STDOUT_FILENO 标准输出 2: STDERR_FILENO 标准错误输出 文件描述符的应用 打开文件,得到文件的文件描述符 通过文件描述符对文件进行读写等操作 通过文件描述符关闭文件 POSIX 表示可移植操作系统接口,最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。 ?文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。 文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。 必须通过文件描述符对文件进行操作,是FILE结构类型的一个成员。 文件描述符 用户进程A连续三次打开文件 fd1 = open(“/etc/passwd”, O_RDONLY); //只读 fd2 = open(“local”, O_RDWR); //读写 fd3 = open(“/etc/passwd”, O_WRONLY); //只写 得到三个文件描述符: fd1:3; fd2: 4 ; fd3:5 一个文件可以被某个进程多次打开,得到一个文件标识号。 它们的file中的f_inode都指向同一个inode。 10.4.2 open和close系统调用 mode close系统调用 fd:要关闭的文件描述符 返回值:成功返回0,失败返回-1 关闭文件时,内核作相应处理 对文件在系统打开文件表中的引用计数减1,如果减为0,则释放该文件描述项,使其为空闲可用项。 对文件inode索引节点中的引用计数减1。 释放该文件的文件描述符 当一个进程终止时,内核会自动检查并回收该进程所有的文件描述符,用户不必显式地调用close。 10.4.3 read和write系统调用 buf: 指向缓冲区的指针 length: 缓冲区的大小(以字节为单位)。 返回值: 成功:实际读写的字节数。 失败:返回-1。 read: 从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中。 write: 把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。 出错信息的处理 全局变量 errno:当Linux C API函数发生异常时,会将errno变量赋一个整数值 不同的值表示不同的含义, 通过查看该值推测出错的原因。 int main(int argc, char **argv) { int fd; char buffer[BUFFER_SIZE]; if(argc!=2){ fprintf(stderr,Usage:%s outfilename\n\a,argv[0]); exit(1); } if((fd=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR))==-1) { fprintf(stderr,Open %s Error:%s\n\a,argv[1],strerror(errno)); exit(1); } printf(Now,please input string); printf((To quit use CTRL+D)\n); while(1) { fgets(buffer, BUFFER_SIZE, stdin); if(feof(stdin)) break; write(fd, buffer, strlen(buffer)); } close(fd); } dup和dup2函数---略 功能:复制一个现存的文件描述符,使两个文件描述符指向同一个file 结构体 返回值: 成功:新分配或指定的文件描述符 出错: -1 dup :复制已打开的文件描述字 dup2 :按指定条件复制文件描述字 int main( ) { int fdw,fdr,len; char str[Length]; fdr=open(“source.txt”,O_RDONLY); //只读 if (fdr) len=read(fd

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档