04文件及IO(一).ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
open系统调用2-1 有几种方法可以获得允许访问文件的文件描述符。最常用的是使用open()(打开)系统调用 函数原型 int open(const char *path, int flags); 参数 path :文件的名称,可以包含(绝对和相对)路径 flags:文件打开模式 返回值 打开成功,返回文件描述符; 打开失败,返回-1 open系统调用2-2 函数原型 int open(const char *path, int flags,mode_t mode); 参数 path :文件的名称,可以包含(绝对和相对)路径 flags:文件打开模式 mode: 用来规定对该文件的所有者,文件的用户组及系 统中其他用户的访问权限 返回值 打开成功,返回文件描述符; 打开失败,返回-1 打开文件的方式 访问权限 open调用的几点说明 可以利用按位逻辑加(bitwise-OR)(|)对打开方式的标志值进行组合。 如打开一个新文件: #define NEWFILE (O_WRONLY|O_CREAT|O_TRUNC) 对访问权限位进行访问所用到的标识符,均可以通过 #include sys/stat.h 访问到,同样可以通过|运算来对访问权限进行组合 #define MODE755 (S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) close系统调用 为了重新利用文件描述符,用close()系统调用释放打开的文件描述符 函数原型:int close(int fd); 函数参数: fd :要关闭的文件的文件描述符 返回值 如果出现错误,返回-1 调用成功返回0 creat系统调用2-1 为了维持与早期的UNIX系统的向后兼容性,Linux也提供可选的创建文件的系统调用,它称为creat()。 函数原型: int creat(const char *path, mode_t mode); 参数 path :文件的名称,可以包含(绝对和相对)路径 mode: 用来规定对该文件的所有者,文件的用户组及系 统中其他用户的访问权限 返回值 打开成功,返回文件描述符; 打开失败,返回-1 creat系统调用(2-2) 在UNIX的早期版本中,open()系统调用仅仅存在两个参数的形式。如文件不存在,它就不能打开这些文件。文件的创建则由单独的系统调用creat()完成。在Linux及所有UNIX的近代版本中,creat()系统调用是多余的。 creat()调用 fd = creat(file, mode); 完全等价于近代的open()调用 fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, mode); read系统调用 一旦有了与一个打开文件描述相连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函数原型: ssize_t read(int fd, void *buf, size_t count); 参数 fd :想要读的文件的文件描述符 buf : 指向内存块的指针,从文件中读取来的字节放到这个内存块中 count : 从该文件复制到buf中的字节个数 返回值 如果出现错误,返回-1 读文件结束,返回0 否则返回从该文件复制到规定的缓冲区中的字节数 write系统调用 用write()系统调用将数据写到一个文件中 函数原型: ssize_t write(int fd, const void *buf, size_t count); 函数参数: fd:要写入的文件的文件描述符 buf: 指向内存块的指针,从这个内存块中读取数据写入 到文件中 count: 要写入文件的字节个数 返回值 如果出现错误,返回-1 如果写入成功,则返回写入到文件中的字节个数 文件与I/O(一) 第四章 * 本章目标 什么是I/O 文件描述符 文件系统调用 * 什么是I/O 输入/输出是主存和外部设备之间拷贝数据的过程 设备-内存 (输入操作) 内存-设备 (输出操作) 高级I/O ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的I/O 低级I/O 通常也称为不带缓冲的I/O * 文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。 当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息。 一个进程启动时,默认打开了3个文件,标准输入、标准输出、标准错误,

文档评论(0)

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

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

1亿VIP精品文档

相关文档