- 1、本文档共190页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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位为权限
您可能关注的文档
- 第3章土木工程解说.ppt
- LED产品知识培训解说.ppt
- 第3章网际层协议-IP协议解说.ppt
- 第3章网络安全协议解说.ppt
- 第3章-网络扫描与网络监听解说.ppt
- 第3章网络系统设计新解说.ppt
- 第3章网络嗅探解说.ppt
- 第3章网络综合布线系统工程常用器材和工具解说.ppt
- LED基础知识解说.ppt
- LED路灯节能改造方案解说.ppt
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)