- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标准i o库课件
标准I/O库 标准I/O库 库函数是一些完成常见的特定功能的函数,一般由某个标准组织制作发丰。并形成一定的标准,库函数一般可以应用于不同的平台面不需要做任何修改,具有很好的可移植性。系统调用函数与操作系统直接相关,不同的操作系统使用的调用可能不同,因此可移植性不高。 库函数在实现中也可能需要使用系统调用,但它封装了系统调用操作。用户不必关心使用了哪些系统调用。 文件I/O和标准I/O库的区别 linux的文件I/O是一种低级的I/O,由操作系统提供的基本IO服务, 而标准I/O是ANSIC建立的一种标准I/O模型,是一种标准函数包和stdio.h头文件中的定义,具有一定的可移植性。 两者最大区别:标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构;文件I/O一般没有采用缓冲模式,需要自己创建缓冲区。一种是标准库封装系统调用而成,更高级 ,一种是系统提供的,比较低层 。 1.1 文件基本概念 流和FILE对象 前一节中,我们讲述所有I/O函数都是针对文件描述符的。当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的I/O操作。而对于标准I/O库,它们的操作则是围绕流进行的。当用标准I/O库打开或创建一个文件时,我们已使用一个流与一个文件相关联。 文件流 流是一个抽象的概念,是物质从一处向另一处流动的过程,多用于程序开发中。在程序开发中,流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入或从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为“流”。 文件缓冲区 根据应用程序对文件的访问方式,即是否存在缓冲区,文件系统分为缓冲区的文件系统和非缓冲文件系统。 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区。本章介绍的遵循 ANSI 标准的 I/O 函数使用的就是缓冲文件系统。 非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区。 POSIX 标准的系统调用 I/O 函数使用的就是非缓冲文件系统 缓冲文件系统 缓冲文件系统 标准的 C 库函数建立在底层系统调用之上,即 C 函数库文件访问函数的实现中使用了文件 I/O 系统调用。 标准的 C 库中的文件处理函数为了减少使用系统调用的次数,提高效率,根据应用的不同,如图所示采用缓冲区机制,这样,在对磁盘文件进行读操作时,可以一次性地从文件中读出大量数据到缓冲区中,以后对这部分数据的访问就不需要再使用系统调用了。在对磁盘文件进行操作时,可以先将内容存储在文件缓冲区中,待文件缓冲区满后再用系统调用将该文件一次写入到磁盘。 根据使用领域的不同需求,标准 C 函数使用了全缓冲、行缓冲和无缓冲 3 种缓冲区处理方式。 全缓冲:这种情况下,在填满标准I/O缓冲区后才进行实行I/O操作。 行缓冲:在这种情况下,当在输入和输出中遇到换行符时,标准I/O库执行I/O操作。当流涉及一个终端时,通常使用行缓冲。 不带缓冲:标准I/O库不对字符进行缓冲存储。 非缓冲文件系统 非缓冲区 非缓冲区的文件访问方式,每次在对该文件进行任何一次读写操作时,都需要使用读写文件系统调用来处理该操作,因 此 ,如 果 用 户程序需要访问磁盘空间中的某个文件,则每访问一次都需要执行一次系统调用。在这个过程中,系统需要从用户空间切换到内核空间,实现上下文的切换,这将损耗一定的 CPU 时间,频繁的磁盘访问对程序的执行效率将造成很大影响 更改缓冲类型 Void setbuf(FILE *fp, char * buf) Int setvbuf(FILE *fp, char *buf, int mode, size_t size) 返回值:成功返回0,出错返回非0值 这些函数一定要在流已被打开后调用,而且也应该在对流执行任何其他操作之前调用。 1.2 文件指针 文件指针与文件描述符区别 文件描述符,在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开这个文件,就会获得这个文件描述符,它 是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:可移植性差,也不直观。 文件指针,C语言中使用的是文件指针,而不是文件描述符做为I/O的句柄.文件指针(file pointer)指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符值.而文件描述符值是文件描述符表中的一个索引.从某种意义上说文件指针就是句柄的句柄。 文件指针 流是操作系统抽象出来的概念,其实体由操作系统维护和管
您可能关注的文档
最近下载
- DB11T 383-2023 建筑工程施工现场安全资料管理规程.docx
- 2024-2025学年小学劳动三年级上册人教版《劳动教育》教学设计合集.docx
- 单位工伤事故认定公示情况反馈表(样表).doc
- 卫生监督法律法规和政策文件答案-2024年全国疾控系统“大学习”活动.docx VIP
- (心理咨询师习题集《案例分析》.doc VIP
- 《民航危险品运输》教学课件.docx VIP
- 拼多多新商家基础经营能力认证考试题库答案,平台规则+商品设置+客户服务+订单售后.docx
- 推动车辆互联的创新驱动车联网MNO智能物联卡平台解决方案.pptx
- 云平台解决方案酒店管理系统的完美选择.pptx
- GB50084-2017 自动喷水灭火系统设计规范.docx
文档评论(0)