- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以前Unix族允许编程访问底层文件系统结构,但各种操作系统不同的文件系统结构使得这种方法缺乏可移植性。目前多使用一套标准库函数实现目录操作。与目录操作有关的函数在dirent.h中声明。 * * open(“myfile”,O-CREAT,S_IRUSR|S_IXOTH) 创建一个user有读权限,其他用户有执行权限的文件myfile * O_EXCL和O_CREAT一起使用,确保调用者能创建出文件。该模式可以防止两个程序同时创建同一个文件,如果文件已经存在,open调用将失败。 * 文件打开时,偏移量被初始化为0,除非使用了O_APPEND模式。 off_t 是一个跟具体实现有关的长整数类型,定义在sys/types.h中。 文件指针移动到文件末尾之外会如何?不会导致调用失败。 如果 offset 比文件的当前长度更大,下一个写操作就会把文件“撑大?(extend)”。这就是所谓的在文件里创造“空洞?(hole)”。没有被实际写入文件的所有字节由重复的 0?表示。空洞是否占用硬盘空间是由文件系统?(file system)决定的。 ?off_t??? currpos;?currpos = lseek(fd, 0, SEEK_CUR); #返回当前文件指针偏移量; 如果fd指向的是 pipe、FIFO 或者 socket,lseek 返回 -1 并且置 errno 为?ESPIPE。 * * * filename可以是硬链接也可以是软链接。如果unlink删除掉一个文件硬链接,该文件的链接数减1,当文件的硬链接数减为0时,该文件被物理删除。 * 只有超级用户才能调用该函数。 * #includesys/types.h#includesys/stat.hint chmod(const char * path,mode_t mode); 参数 mode 有下列数种组合S_ISUID 04000 文件的(set user-id on execution)位S_ISGID 02000 文件的(set group-id on execution)位S_ISVTX 01000 文件的sticky位S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限S_IRGRP 00040 用户组具可读取权限S_IWGRP 00020 用户组具可写入权限S_IXGRP 00010 用户组具可执行权限S_IROTH 00004 其他用户具可读取权限S_IWOTH 00002 其他用户具可写入权限S_IXOTH 00001 其他用户具可执行权限只有该文件的所有者或有效用户识别码为0,才可以修改该文件权限。基于系统安全,如果欲将数据写入一执行文件,而该执行文件具有S_ISUID 或S_ISGID 权限,则这两个位会被清除。如果一目录具有S_ISUID 位权限,表示在此目录下只有该文件的所有者或root可以删除该文件。返回值 权限改变成功返回0,失败返回-1,错误原因存于errno。错误代码 EPERM 进程的有效用户识别码与欲修改权限的文件拥有者不同,而且也不具root权限。EACCESS 参数path所指定的文件无法存取。EROFS 欲写入权限的文件存在于只读文件系统内。EFAULT 参数path指针超出可存取内存空间。EINVAL 参数mode不正确ENAMETOOLONG 参数path太长ENOENT 指定的文件不存在ENOTDIR 参数path路径并非一目录ENOMEM 核心内存不足ELOOP 参数path有过多符号连接问题。EIO I/O 存取错误 * fstat系统调用返回与打开的文件描述符相关的文件的状态信息,该信息写到stat结构中,地址传递给fstat。 stat和lstat是通过文件名查到文件状态信息,它们产生的结果相同。但当文件是一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接所指向的文件的信息。 * POSIX标准关于st_mode的宏定义包含在头文件sys/stat.h中 * POSIX标准关于st_mode的宏定义包含在头文件sys/stat.h中 * 文件访问权限的获取: if((st.st_modeS_IFMT)==S_IFBLK) printf(Permission:%o\n,file_stat.st_mode0x1ff); mode_t st_mode是一个无符号整型。mode_t一共有16位,前面7位用来表示文件类型,可用掩码按位与确定,后面9位为权限
您可能关注的文档
最近下载
- BS EN 12390-4-2019 Testing hardened concrete Part 4:Compressive strength – Specification for testing machines 硬化混凝土试验第4部分: 抗压强度试验机规范.pdf
- BS EN 12350-5-2019 新鲜混凝土试验.第5部分:流动表试验.pdf VIP
- BS EN 12350-4-2019 新鲜混凝土试验.第4部分:密实度.pdf VIP
- BS EN 12350-5-2019 Testing fresh concrete Part 5:Flow table test 新拌混凝土试验第5部分: 流动台试验.pdf
- 颈动脉支架成形术治疗颈动脉狭窄病人的护理.pdf VIP
- 重庆文理学院,校考,中国现当代作家作品选复习题1.doc VIP
- 重庆文理学院,校考,中国现当代作家作品选复习题2.doc VIP
- BS EN 12350-6-2019 Testing fresh concrete Part 6:Density 新浇混凝土试验第6部分: 密度.pdf
- 交叉配血标本采集流程.pptx VIP
- BS EN 12350-2-2019 新鲜混凝土试验.第2部分:塌陷试验.pdf VIP
原创力文档


文档评论(0)