Chapter2-用户、文件操作和联机帮助.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
off_t oldpos = lseek(int fd, off_t dist , int base) 参数:fd 文件描述符 dist 移动的距离 base: SEEK_SET =文件的开始 SEEK_CUR =当前位置 SEEK_END =文件结尾 返回值:-1 遇到错误 oldpos 指针变化前的位置 Lseek的用法 小结 Who命令通过读系统日志的内容显示当前已经登录的用户。 系统调用操作文件 open(filename,how) creat(filename,mode) read(fd,buffer,amt) write(fd,buffer,amt) lseek(fd,distance,base) close(fd) 进程对文件的读/写都要通过文件描述符,文件描述符表示文件和进程间的连系。 每次系统调用都会导致用户模式和内核模式的切换及执行内核代码,所以减少程序中的系统调用发生的次数可以提高程序运行效率。 程序可以通过缓冲技术来减少系统调用的次数。 当系统调用出错时会把全局变量error的值设为相应的错误代码,然后返回-1,程序可以通过检查error来确定错误的类型,并采取相应措施。 本章的知识在系统中都可以找到,联机帮助中有命令的说明。 * * Unix/Linux编程 北京化工大学 信息科学与技术学院计算机系 易军凯 yijk@mail.buct.edu.cn 第2章 用户、文件操作与联机帮助 --编写who命令 概念与技巧: 联机帮助的作用与使用方法 Unix的文件操作函数:open、read、write、lseek、close 文件的建立与读写 文件描述符 缓冲:用户级的缓冲与内核级的缓冲 内核模式、用户模式、和系统调用的代价 Unix表示时间的方法与时间格式间的转换 借助utmp文件来列出已登录的用户 系统调用中的错误检测与处理 相关的系统调用: open、read、write、creat、lseek、close perror 相关命令: man who cp login 主要内容: 2.1 编写who命令 2.2 编写cp(读和写) 2.3 提高文件I/O效率的方法,使用缓冲 2.4 内核缓冲技术 2.5 文件读写 2.1.1 who命令能做些什么? 2.1.2 who命令是如何工作的? 2.1.3 如何编写who? 2.1 编写who命令 2.1.1 who命令能做些什么? 运行 $ who 用于获取信息:哪些用户正在使用系统,系统是否很繁忙,某人是否正在使用系统等。 查看who的帮助:$ man who 描述(DESCRIPTION)部分是关于命令功能的详细阐述;选项(OPTIONS)部分给出了命令行中每一个选项的说明;参阅(SEE ALSO)包含与这个命令相关的其它主题。 2.1.2 who命令是如何工作的? 阅读联机帮助: $ man who 搜索联机帮助: $ man –k user | more 阅读.h文件: $ more / usr / include / foo.h 从参阅部分(SEE ALSO)中的得到启示 who的工作原理: who通过读文件来获得需要的信息,而每个用户在文件中都有对应的记录。 2.1.3 如何编写who (1)问题:如何从文件中读取数据结构? 可以用getc和fgets逐个字节地读取,但这样太繁琐,而且效率很低。 查看联机帮助: $ man – k file | grep read $ man 2 read (2)答案:使用open、read和close int fd = open ( char * name , int how ) 参数:name :文件名 how :O_RDONLY,O_WRONLY, or O_RDWR 返回值:-1 遇到错误 int 成功返回 打开文件是内核提供的服务,文件被顺利打开,内核会返回一个正整数的值,这个数值就叫做文件描述符。必须通过文件描述符对文件进行操作。 fd = open ( name , mode ) n = read ( fd , array , numchars ) 目标:把数据读取到缓冲区 返回值:-1 遇到错误 numread 成功读取,返

文档评论(0)

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

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

1亿VIP精品文档

相关文档