- 1、本文档共62页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章文件操作
(2)改变文件的访问权限 #includesys/types.h #includeunistd.h int chmod(char *pathname, mode_t mode); #includesys/types.h #includeunistd.h int fchmod(int fd, mode_t mode); 参数pathname和fd同上,mode表示调用所要修改的文件的权限设置。文件的权限设置由一组八进制数来表示,称权限位,在系统中设置了相应的标识符来表示这些八进制数。 调用成功时,返回0,否则返回-1。 Mode取值 含义 S_ISUID 04000 设置用户识别号 S_ISGID 02000 设置组识别号 S_SVTX 00100 粘贴位 S_IRUSR 00400 文件所有者的读权限位 S_IWUSR 00200 文件所有者的写权限位 S_IXUSR 00100 文件所有者的执行权限位 S_IRGRP 00040 所有者同组用户的读权限位 S_IWGRP 00020 所有者同组用户的写权限位 S_IXGRP 00010 所有者同组用户的执行权限位 S_IROTH 00004 其他用户的读权限位 S_IWOTH 00002 其他用户的写权限位 S_IXOTH 00001 其他用户的执行权限位 表3-3 mode的相应设置 2、修改文件的其他属性 (1)重命名 #includestdio.h int rename(const char *oldname, const char *newname); 其中oldname和newname都是字符串指针,代表旧文件名和新文件名。调用成功时返回0,否则返回-1。 rename调用是否能成功,与oldname指向普通文件还是目录文件,newname所表示文件是否存在有关系,若存在是普通文件还是目录文件等情况都有关系,具体可见下表。 oldname指向 newname所示文件不存在 newname指向普通文件 newname指向目录文件 oldname指向普通文件 文件被重命名 newname被删除,原来名为oldname的文件被重命名为newname 错误 Oldname执行目录文件 文件被重命名 错误 newname所指向的目录文件为空目录则该目录文件被删除,oldname被重命名,否则出错 。 表3-4 系统调用rename的参数选取 (2)修改文件长度 有时需要对文件的大小进行修改,这是将会用到截断文件长度的系统调用。 #includeunistd.h int truncate(char *pathname,size_t len); #includeunistd.h int ftruncate(int fd,size_t len); 其中参数len用于指定要将文件截取到的长度。调用成功时返回0,否则返回-1。 7.3.2 文件的其他操作 1、dup和dup2调用 #includeunistd.h int dup(int fd); int dup2(int fd,int fd2); 这两个调用都将复制文件描述符fd。两个调用的返回值都为新的文件描述符,不同的是,dup的返回值是最小的未用文件描述符,而dup2的返回值是预先指定的文件描述符fd2。如果文件描述符fd2正在被使用,则先关闭fd2。如果fd2与fd相同,则不关闭该文件正常返回。 2、stat、fstat和lstat调用 Linux系统中的所有文件都有一个与之相对应的索引节点,其中包括了文件的相关信息,这些信息被保存在stat结构体中。可以使用如下系统调用来查看stat结构体: #includesys/stat.h #includesys/types.h int stat(const char *pathname, struct stat *sbuf); int fstat(int fd, struct stat *sbuf); int lstat(const char *pathname, struct stat *sbuf); 以上3个函数调用成功时返回0,否则返回-1。 参数sbuf是指向stat结构体的指针,函数stat和fstat的区别如下: 函数stat和fstat的区别是stat通过文件路径名访问文件,而fstat通过文件描述符访问文件。 函数stat和lstat的区别是当访问一
文档评论(0)