Linux程序设计 4-第四章 文件操作与文件管理.pptx

Linux程序设计 4-第四章 文件操作与文件管理.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 文件操作与文件管理基本要求掌握Linux文件系统的实现,系统调用和标准I/O库,文件属性目录的实现和操作,系统数据文件,文件锁,高级I/O。Linux平台下文件编程在Linux平台下对文件编程可以使用两类函数:Linux操作系统文件API;C语言I/O库函数。 前者依赖于Linux系统调用,后者实际上与操作系统是独立的,因为在任何操作系统下,使用C语言I/O库函数操作文件的方法都是相同的。 Linux文件API-创建创建int create(const char *filename, mode_t mode); 参数mode指定新建文件的存取权限,它同umask一起决定文件的最终权限(modeumask).umask代表了文件在创建时需要去掉的一些存取权限。umask可通过系统调用umask()来改变: int umask(int newmask); 该调用将umask设置为newmask,然后返回旧的umask,它只影响读、写和执行权限。Linux文件API-创建标志含义S_IRUSR 用户可以读 S_IWUSR 用户可以写 S_IXUSR 用户可以执行 S_IRWXU 用户可以读、写、执行 S_IRGRP 组可以读 S_IWGRP 组可以写S_IXGRP 组可以执行 S_IRWXG 组可以读写执行 mode可以是以下情况的组合,可以通过上述宏进行“或”逻辑产生标志。 Linux文件API-创建标志含义S_IROTH其他人可以读S_IWOTH其他人可以写S_IXOTH其他人可以执行S_IRWXO其他人可以读、写、执行S_ISUID设置用户执行IDS_ISGID设置组的执行IDmode可以是以下情况的组合,可以通过上述宏进行“或”逻辑产生标志。Linux文件API-创建用数字来表示:Linux总共用5个数字来表示文件的各种权限:第一位表示设置用户ID;第二位表示设置组ID;第三位表示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。每个数字可以取1(执行权限)、2(写权限)、4(读权限)、0(无)或者是这些值的和。Linux文件API-创建★用数字来表示:例如,要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。应该使用的模式是1(设置用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)即10705Linux文件API-打开打开int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); 如果文件打开成功,open函数会返回一个文件描述符,以后对该文件的所有操作就可以通过对这个文件描述符进行操作来实现。open函数有两个形式,其中pathname是要打开的文件名(包含路径名称,缺省是认为在当前路径下面) 。Linux文件API-打开打开flags可以是下面的一个值或者是几个值的组合,O_RDONLY、O_WRONLY、O_RDWR三个标志只能使用任意的一个。Linux文件API-打开打开如果使用了O_CREATE标志,则使用的函数是int open(const char *pathname,int flags,mode_t mode); 这时要指定mode标志,用来表示文件的访问权限。以O_CREAT为标志的open实际上实现了文件创建的功能。例如: open(test, O_CREAT, 10705); open(test, O_CREAT, S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );Linux文件API-读写读写Linux中提供文件读写的系统调用是read、write函数: int read(int fd, const void *buf, size_t length); int write(int fd, const void *buf, size_t length);参数buf为指向缓冲区的指针,length为缓冲区的大小(以字节为单位)。Linux文件API-读写int read(int fd, const void *buf, size_t length);函数read实现从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。int write(int fd, const void *buf, size_t length);函数write实现将把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。Linux文件API-定位定位:对于随

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档