网站大量收购独家精品文档,联系QQ:2885784924

2-Linux环境高级编程-文件与目录操作.ppt

  1. 1、本文档共122页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HW1 使用命名管道,实现多进程环境下的日志记录功能,要求,不出现写入数据的错乱. 约束: 多进程环境,多生产者(APP 1 - n),单消费者(LOG SVR) 写入的数据对齐问题。 写入的协同问题。 * 执行结果 * 更名文件和目录 int rename ( const char *oldname, const char *newname); 该函数可以用来更名文件或目录 如果oldname是一个文件而不是目录,那么为该文件更名。如果newname已存在,而且是一个目录,则出错,如果不是目录,则先将该目录项删除,然后将oldname更名为newname; 如果oldname是一个目录,那么为该目录更名。如果newname已存在,则它必须引用一个目录,而且该目录应当是空目录,此时,内核先将其删除,然后将oldname更名为newname。另外,当为一个目录更名时,newname不能包含oldname作为其路径前缀 作为一个特例,如果oldname和newname引用同一文件,则函数不做任何更改而成功返回。 应对包含两个文件的目录具有写和执行许可权。 * 文件的时间 对每个文件系统保存有三个时间字段,其中: 注意修改时间和更改状态时间之间的区别。系统并不保存对一个i节点的最后一次存取时间。所以,access和stat函数并不更改三个时间中的任何一个。 字段 说明 例子 ls(1)选项 at_atime 文件数据的最后访问时间 read -u at_mtime 文件数据的最后修改时间 write 默认 st_ctime i节点状态的最后更改时间 chmod -c * Utime函数 int utime( const char *pathname, const struct utimbuf *times); struct utimbuf { time_t actime; /* access time */ time_t modtime /* modification time */ } 该函数用于更改存取和修改文件的时间。此函数的操作以及执行它所要求的优先权取决于time参数是否是NULL 如果times是一个NULL,则存取时间和修改时间两者都设置为当前时间,但必须满足下面二者之一:(1)进程的有效用户ID必须等于该文件的所有者(2)进程对该文件有写许可权 如果times是非空指针,则存取时间和修改时间被设置为times所指向的时间,此时,(1)进程的有效用户ID必须等于该文件的所有者ID,或者(2)进程必须是超级用户的进程。仅对文件具有写许可权是不够的。 如何只设置其中一个时间? * utime函数 int main(int argc, char *argv[]) { struct stat statbuf; struct utimbuf timebuf; if (argc != 2) err_sys(a.out filename); if (stat(argv[1], statbuf) 0) /* fetch current times */ err_ret(%s: stat error, argv[1]); if (open(argv[1], O_RDWR | O_TRUNC) 0) /* truncate */ err_ret(%s: open error, argv[1]); timebuf.actime = statbuf.st_atime; timebuf.modtime = statbuf.st_mtime; if (utime(argv[1], timebuf) 0) /* reset times */ err_ret(%s: utime error, argv[1]); exit(0); } * Last-modification time Last-access time i节点修改时间 * mkdir 和 rmdir函数 int mkdir(const char *pathname, mode_t mode); int rmdir( const char *pathname); mkdir函数创建一个新的空目录,其中的. 和 .. 两个文件项由系统自动创建。所指定的存取许可权由进程的文件方式创建屏蔽字修改;新目录继承父目录

文档评论(0)

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

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

1亿VIP精品文档

相关文档