电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

操作系统实验十

14页
  • 卖家[上传人]:s9****2
  • 文档编号:473912487
  • 上传时间:2023-02-28
  • 文档格式:DOCX
  • 文档大小:28.83KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、实验十:文件系统编程实验目的:学习和掌握使用系统调用操作文件和目录的属性、内容的方法预备知识:1. 系统调用1.1 文件操作1.1.1 open (打开文件)表头文件 #include#include#include定义函数 int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);函数说明参数 pathname 指向欲打开的文件路径字符串。下列是参数 flags 所能使用的标 志:心、O_RDONLY 以只读方式打开文件O_WRONLY 以只写方式打开文件O_RDWR 以可读写方式打开文件。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(I)运算 符组合。O_CREAT 若欲打开的文件不存在则自动建立该文件。O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在 则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设 置,并且欲打开的文件为符号连接,则会打开文件失败。O_N

      2、OCTTY 如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制 终端机。O_TRUNC 若文件存在并且以可写的方式打开时,此旗标会令文件长度清为 0,而 原来存于该文件的资料也会消失。O_APPEND 当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方 式加入到文件后面。O_NONBLOCK 以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都 会立即返回进程之中。O_NDELAY 同 O_NONBLOCK。O_SYNC 以同步的方式打开文件。O_NOFOLLOW 如果参数 pathname 所指的文件为一符号连接,则会令打开文件失 败。O_DIRECTORY 如果参数 pathname 所指的文件并非为一目录,则会令打开文件失 败。参数 mode 则有下列数种组合,只有在建立新文件时才会生效,此外真正建文件时 的权限会受到umask值所影响,因此该文件权限应该为(mode-umaks)。S_IRWXU 00700 权限,代表该文件所有者具有可读、可写及可执行的权限。S_IRUSR 或 S_IREAD, 00400权限,代表该文件所有者具有可读取的权限。S_

      3、IWUSR 或 S_IWRITE, 00200 权限,代表该文件所有者具有可写入的权限。S_IXUSR 或 S_IEXEC, 00100 权限,代表该文件所有者具有可执行的权限。S_IRWXG 00070权限,代表该文件用户组具有可读、可写及可执行的权限。S_IRGRP 00040 权限,代表该文件用户组具有可读的权限。S_IWGRP 00020权限,代表该文件用户组具有可写入的权限。S_IXGRP 00010 权限,代表该文件用户组具有可执行的权限。S_IRWXO 00007权限,代表其他用户具有可读、可写及可执行的权限。S_IROTH 00004 权限,代表其他用户具有可读的权限S_IWOTH 00002权限,代表其他用户具有可写入的权限。S_IXOTH 00001 权限,代表其他用户具有可执行的权限。 返回值若所有欲核查的权限都通过了检查则返回0 值,表示成功,只要有一个权限被禁 止则返回-1。错误代码 EEXIST参数pathname所指的文件已存在,却使用了 O_CREAT和O_EXCL 旗标。EACCESS参数pathname所指的文件不符合所要求测试的权限。EROFS 欲

      4、测试写入权限的文件存在于只读文件系统内。EFAULT 参数 pathname 指针超出可存取内存空间。EINVAL 参数 mode 不正确。ENAMETOOLONG 参数 pathname 太长。ENOTDIR 参数 pathname 不是目录。ENOMEM 核心内存不足。ELOOP 参数 pathname 有过多符号连接问题。EIO I/O 存取错误。1.1.2 close(见管道通信)1.1.3 read (见管道通信)1.1.4 write(见管道通信)1.1.5 lseek (移动文件的读写位置)表头文件 #include#include定义函数 off_tlseek(intfildes,off_t offset ,int whence);函数说明每一个已打开的文件都有一个读写位置,当打开文件时通常其读写位置是指向文件开头,若是以附加的方式打开文件(如O_APPEND),贝9读写位置会指向文件尾。当 read()或write()时,读写位置会随之增加,lseek()便是用来控制该文件的读写位置。参数 fildes为已打开的文件描述词,参数offset为根据参数whence来移动

      5、读写位置的位移数。 参数 whence 为下列其中一种:SEEK_SET参数offset即为新的读写位置。SEEK_CUR以目前的读写位置往后增加offset个位移量。SEEK_END将读写位置指向文件尾后再增加offset个位移量。当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值的出现。下列是较特别的使用方式:1) 欲将读写位置移到文件开头时:lseek (int fildes,O,SEEK_SET);2) 欲将读写位置移到文件尾时:lseek (intfildes,0,SEEK_END);3) 想要取得目前文件位置时:lseek (intfildes,0,SEEK_CUR);返回值当调用成功时贝返回目前的读写位置,也就是距离文件开头多少个字节。若有错 误则返回-1, errno会存放错误代码。附加说明Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。1.1.6 fstat (由文件描述词取得文件状态)表头文件 #include#include定义函数 intfstat(intfildes,struct st

      6、at *buf);函数说明fstat()用来将参数fildes所指的文件状态,复制到参数buf所指的结构中(struct stat)。Fstat()与stat()作用完全相同,不同处在于传入的参数为已打开的文件描述词。返回值执行成功则返回0,失败返回-1,错误代码存于 errno。struct stat:fstat is identica1 to statj only the open file pointed toby f iledes f ile_name.(as returnedby open(Z) is stated in placeofdeu_tst_dev;ino_tst_ino;mode_tst_mode;n1ink_tst_nlink;u id_tst_u id;gid_tst_g id;deu tst_rdev;off_tst_s ize;unsignedlongst_bIks ize;unsignedlongst_blocks;t ime_tst_at ime ;t ime_tst_mt ime;time tst_ct ime;struct stat /*timeo

      7、flastaccess */*timeoflastmod if icat ion */*timeoflastchange */uhich contains the fo 1 -They all return a stat structure, losing f ieIds:/* device */* inode */* protection */* number of hard 1 inks */* user ID of ouner */* group ID of ouner */* device type (if inode device) */* tota1 size, in bytes */* blocksize f or f ilesystem I/O */* number of blocks a 1 located */列数种情况S_IFMT 0170000 文件类型的位掩码S_IFSOCK 0140000 scoketS_IFLNK 0120000 符号连接S_IFREG 0100000 一般文件S_IFBLK 0060000 区块装置S_IFDIR 0040000 目录S

      8、_IFCHR 0020000 字符装置S_IFIFO 0010000 先进先出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 其他用户具可执行权限 上述的文件类型在 POSIX 中定义了检查这些类型的宏定义S_ISLNK (st_mode)判断是否为符号连接S_ISREG (st_mode )是否为一般文件S_ISDIR (st_mode)是否为目录S_ISCHR (st_mode)是否为字符装置文件S_ISBLK (s3e )是否为先进先出S_ISSOCK (st_mode)是否为 socket范例#include#include#includemain()struct stat buf;intfd;fd = open (“/etc/passwd”,O_RDONLY);fstat(fd,&buf);1.2 文件权限操作1.2.1 chown (改变文件的所有者)表头文件 #include#include定义函数 intchown(const char * path, uid_towner,gid_t group);函数说明chown()会将参数path指定文件的所有者变更为参数owner代表的用户,而将 该文件的组变更为参数group组。如果参数owner或group为-1,对应的所有者或组不 会有所改变root与文件所有者皆可改变文件组,但所有者必须是参数group组的成员。当root用chown()改变文件所有者或组时

      《操作系统实验十》由会员s9****2分享,可在线阅读,更多相关《操作系统实验十》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.