第3单元 文件和目录.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3单元 文件和目录

* 创建硬链接 int link(char *pathname1, char *pathname2); 参数: pathname1表示已存在文件 pthname2表示硬链接文件 返回值:成功返回0,失败返回-1(置errno) 注意:增加的是一个文件名,指向原文件的i节点。 * 删除硬链接 int unlink(char *pathname); 参数: pathname要删除的链接文件名 返回值:成功返回0,失败返回-1(置errno) 注意: 将pathname所引用的硬链接计数减1,如果硬链接计数不为0,则通过其他硬链接也可以访问该文件,如果计数为0,则该文件被删除。 删除文件时如果该文件已经打开则要延迟到文件关闭后才真正删除。P90,程序4-5。这种性质经常被用来清除临时文件。 * 创建符号链接 int symlink(char *actualpath, char *sympath); 参数: actualpath表示原文件或目录,可以不存在 sympath表示符号链接文件 返回值:成功返回0,失败返回-1(置errno) * 读取符号链接 open函数打开文件时,如果该文件是符号链接文件,则将会打开被链接的文件。所以需要读取符号链接所指原文件名。 int readlink(char *pathname,char *buf, int bufsize); 参数 pathname:符号链接文件名 buf:存放被链接文件名的缓冲区,不以NULL字符终止。 bufsize:缓冲区大小 返回值: 成功返回实际写入缓冲区的字节数,失败返回-1 * 第3单元 文件和目录 3.1?stat、fstat和lstat 3.2 文件类型及权限 3.3 umask 3.4 文件属性的修改 3.5 符号链接与硬连接 3.6 目录基本操作 * 目录文件 目录也是一种文件,目录文件包含了其下文件/子目录名字和i节点号的对应关系。 对目录不能用写操作 写操作由内核完成,如新建文件或子目录时需要写目录文件 创建和删除目录 int mkdir(const char *pathname, mode_t mode); 创建一个空目录,其中的.和..自动创建。 成功返回0,失败返回-1 int rmdir(const char *pathname); 删除空目录,空目录只包含.和.. 成功返回0,失败返回-1 如果目录为空,且没有其他进程打开此目录,则删除 如果目录为空,有其他进程打开此目录,则不立即删除,要等到最后一个进程关闭目录后才删除。而且在此期间,为了保证rmdir成功执行,该目录下不能再执行创建新文件等其他操作。 * * 打开目录 DIR *opendir(const char *path); 参数:path-目录名 返回值:成功返回DIR指针,否则返回NULL(置errno) int closedir(DIR *dirp); 参数:dirp-opendir返回的DIR指针 返回值:成功返回0,否则返回-1(置errno) 举例:DIR *d1; d1=opendir(“/home”); if(d1==NULL) perror(“opendir”); closedir(d1); * 切换目录 int chdir(const char *path); 参数:path目录名 返回值:成功返回0,否则返回-1(置errno) 注意: chdir切换的是本进程的当前目录,不是shell的当前目录,进程切换对shell的当前目录没影响。 获取工作目录 char *getcwd(char *buf, size_t size); 参数: buf:保存目录名的缓冲区地址 size:缓冲区长度,长度要足够。 返回值:成功返回buf,否则返回NULL * * 读取目录 struct dirent *readdir(DIR *dirp); 参数:dirp-opendir返回的DIR指针 返回值:成功回dirent结构体指针,返回NULL表明目录结尾或错误(错误则置errno) struct dirent { ino_t d_ino; // i节点号 char d_name[ ]; //目录下文件/子目录名 }; * 读取目录 注意: 每次readdir读出一行记录,即一组文件名字及i节点号。 如果要读出目录文件中所有文件的名字,则要使用循环方式调用readdir,直到目录文件结尾。 struct dirent *dent1; errno=0; while( (dent1=readdir(d1))!=NULL) { printf(“%d-%s\n, dent1-d_ino, dent1-d_na

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档