Linux文件操作课件.pptVIP

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

#include sys/types.h //off_t的定义,可以不要这个头文件 #include unistd.h //声明lseek()和whence的值 off_t lseek(int fildes, off_t offset, int whence); lseek() 返回相对于文件开始处文件指针的最终位置,如果有错误,则返回 -1。 第一个自变量fildes是已打开文件的文件描述符 第二个自变量offset是要移动的位置作为。这个值有赖于最后一个自变量whence。 off_t是有符号整数类型。 最后一个自变量whence描述文件指针的移动方式: SEEK_SET 将它移动到从文件开始算起的 offset 字节。 SEEK_END 将它移动到从文件结尾算起的 offset 字节。 SEEK_CUR 从它当前位置开始向文件结尾移动 offset 字节。 off_t 类型是表达 long int (long 就是 lseek 中 “l” 的来历)的一种方法。 在测试lseek是否出错时要测试它是否等于-1,而不是测试它是否小于0。 lseek并不引起任何I/O操作,它产生的偏移量用于下次读写操作。 匿名管道pipe和命名管道FIFO不能使用lseek。 #include unistd.h #include sys/stat.h #include fcntl.h #include stdlib.h int main() { if (lseek(STDIN_FILENO,0,SEEK_CUR) == -1) printf(cannot seek\n); else printf(seek ok\n); exit(0); } #include sys/stat.h #includesys/types.h mode_t umask(mode_t mask); 返回值是老的掩码 比如: umask(0); //取消掩码功能 mode_t mask=umask(0); //提取老掩码 (void) umask(mask); //恢复老掩码 umask:设置文件创建掩码 文件操作 linux/unix系统调用 系统调用和标准C库函数的关系 linux/unix文件操作相关系统调用 时间机制和定时器 本实验讨论内容 系统调用是linux操作系统向用户提供的编程接口,提供这些接口应用程序向操作系统请求服务。操作系统完成服务后,将结果和控制返回给用户程序。 如: #include linux/unistd.h //定义宏_syscall1 #includelinux/time.h//定义time_t* _syscall1(time_t,time,time_t* tloc)//宏,展开得到time原型 系统调用 从图上我们可以看出,内核紧紧地包围在硬件周围,内核是一些软件包的组合,它们可以直接访问系统的硬件,包括处理器、内存和I/O设备。而用户进程则通过内核提供的用户服务来和内核通讯,从而间接地控制系统硬件。 内核     用户级、内核级和硬件级三者之间的通讯 用户空间和内核空间 用户空间 内核空间 系统调用 中断 在程序空间中: 用户应用程序工作在用户空间 系统内核运行在内核空间 当应用程序执行系统调用或被硬件中断挂起时,linux将执行模式由用户空间切换到内核空间。 如果是系统调用:执行系统调用的内核代码运行在进程上下文中。 如果是处理硬件中断:处理硬件中断的内核代码和进程是异步的,与任何一个特定进程无关。 模块化代码在内核空间中运行,一个驱动程序模块中的某些函数作为系统调用的一部分执行;而其他函数负责中断处理。 系统调用与通用库函数 unix/linux为系统调用在标准C库中设置一个具有相同功能的函数(不过标准C库中的函数可能要用到一个或多个系统调用,也可能不用系统调用)。 用户通过调用标准C函数来调用系统调用。如printf函数会调用write系统调用来进行输出操作;而函数atoi(变换ASCII为整数)、sin函数或strcpy并不使用系统调用。 系统调用在《UNIX程序员手册》第二部分中说明(man 2 ×××);而通用库函数在《UNIX程序员手册》第三部分中说明(man 3 ×××)。(linux用man ×××来获取对命令×××的帮组,按q键退出;而man 2 则查阅系统调用;man 3查阅通用库函数) /read.php?wid=664 /od/commands/l/blcmdl.htm /onlinepubs/7990989775/index.h

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档