- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
第5章 标 准 I/O 库
5.1 引言
本章说明标准 I / O 库。因为不仅在 U N I X 而且在很多操作系统上都实现此库,所以它由
ANSI C标准说明。标准I / O库处理很多细节,例如缓存分配,以优化长度执行 I / O等。这样使用
户不必担心如何选择使用正确的块长度(如 3 . 9节中所述)。标准I / O库是在系统调用函数基础上
构造的,它便于用户使用,但是如果不较深入地了解库的操作,也会带来一些问题。
标准I / O库是由Dennis Ritchie在1 9 7 5年左右编写的。它是由Mike Lesk 编写的
可移植I / O库的主要修改版本。令人惊异的是, 1 5年后制订的标准I / O库对它只作
了极小的修改。
5.2 流和F I L E对象
在第3章中,所有I / O 函数都是针对文件描述符的。当打开一个文件时,即返回一个文件描
述符,然后该文件描述符就用于后读的 I / O操作。而对于标准 I / O库,它们的操作则是围绕流
(s t r e a m )进行的(请勿将标准I / O术语流与系统V 的STREAMS I/O系统相混淆)。当用标准I / O
库打开或创建一个文件时,我们已使一个流与一个文件相结合。
当打开一个流时,标准I / O 函数f o p e n返回一个指向F I L E对象的指针。该对象通常是一个结
构,它包含了I / O库为管理该流所需要的所有信息:用于实际 I / O 的文件描述符,指向流缓存的
指针,缓存的长度,当前在缓存中的字符数,出错标志等等。
应用程序没有必要检验 F I L E对象。为了引用一个流,需将 F I L E指针作为参数传递给每个
标准I / O 函数。在本书中,我们称指向F I L E对象的指针(类型为F I L E *)为文件指针。
在本章中,我们以U N I X系统为例,说明标准I / O库。正如前述,此标准库已移到除U N I X 以
外的很多系统中。但是为了说明该库实现的一些细节,我们选择U N I X实现作为典型进行介绍。
5.3 标准输入、标准输出和标准出错
对一个进程预定义了三个流,它们自动地可为进程使用:标准输入、标准输出和标准出错。
在3 . 2节中我们曾用文件描述符 S T D I N _ F I L E N O , S T D O U T _ F I L E N O和S T D E R R _ F I L E N O分别表
示它们。
这三个标准I / O流通过预定义文件指针 s t d i n , s t d o u t和s t d e r r加以引用。这三个文件指针同样
定义在头文件 s t d i o . h 中。
5.4 缓存
标准I / O提供缓存的目的是尽可能减少使用 r e a d和w r i t e调用的数量(见表 3 - 1 ,其中显示了
在不同缓存长度情况下,为执行 I / O所需的C P U 时间量)。它也对每个I / O流自动地进行缓存管
9 2 U N I X环境高级编程
下载
理,避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准 I / O库令人最感迷惑的也
是它的缓存。
标准I / O提供了三种类型的缓存:
(1) 全缓存。在这种情况下,当填满标准I / O缓存后才进行实际I / O操作。对于驻在磁盘上的
文件通常是由标准I / O库实施全缓存的。在一个流上执行第一次 I / O操作时,相关标准I / O 函数通
常调用m a l l o c (见7 . 8节)获得需使用的缓存。
术语刷新(f l u s h )说明标准I / O缓存的写操作。缓存可由标准 I / O例程自动地刷新(例如当
填满一个缓存时),或者可以调用函数 ff l u s h刷新一个流。值得引起注意的是在 U N I X 环境中,
刷新有两种意思。在标准 I / O库方面,刷新意味着将缓存中的内容写到磁盘上(该缓存可以只
是局部填写的)。在终端驱动程序方面(例如在第 11章中所述的t c f l u s h 函数),刷新表示丢弃已
存在缓存中的数据。
(2) 行缓存。在这种情况下,当在输入和输出中遇到新行符时,标准 I / O库执行I / O操作。这
允许我们一次输出一个字符(用标准 I/
您可能关注的文档
- .HDPE双壁波纹管施工工法.doc
- .HG20203-2000化工机器安装工程施工及验收通用规范.pdf
- .HR必修课《员工关系管理学》.doc
- .HR必修课《员工关系管理学》2009新版(.pdf
- .i-n-u-x系统高级编程.pdf
- .IBM-消费电子产业变革.pdf
- .ICU病人镇痛镇静治疗指南2.pdf
- .ISO0014 企业文件编号规范.doc
- .ISO14001-2004标准(不能编辑).doc
- .ITIL manager考试指南(笔记).doc
- 预应力筋用锚具、夹具和连接器应用技术规程 JGJ 85-2010 知识培训.pptx
- 多联机空调系统工程技术规程 JGJ 174-2010 知识培训.pptx
- 2025届山西晋中学市榆次区中考冲刺卷历史试题含解析.doc
- 钢管满堂支架预压技术规程 JGJ_T 194-2009 知识培训.pptx
- 河北省唐山市古治区2025届中考历史模拟试卷含解析.doc
- 建筑桩基技术规范 JGJ 94-2008知识培训.pptx
- 普通混凝土用砂、石质量及检验方法标准培训.pptx
- 建筑施工作业劳动防护用品配备及使用标准 JGJ 184-2009知识培训.pptx
- 城市轨道交通引起建筑物振动与二次辐射噪声限值及其测量方法标准 JGJ_T 170-2009知识培训.pptx
- 岩溶地区建筑地基基础技术规范 DBJ_T 15-136-2018 知识培训.pptx
最近下载
- 项目管理知到章节答案智慧树2023年武汉科技大学.docx VIP
- 被动式超低能耗建筑发展制约因素及对策研究.docx VIP
- 法国地理知识课件.pptx VIP
- 2024民族文化宫面向应届毕业生和社会人员招聘笔试备考题库及答案解析.docx VIP
- 人工智能引论智慧树知到答案2024年浙江大学.docx VIP
- UG入门学习教程(共164张课件).pptx VIP
- 2019年福建省漳州一中自主招生数学试卷.pdf VIP
- 乳腺癌的早期筛查与治疗.pptx VIP
- 民族文化宫社会招聘和高校应届毕业生招聘笔试真题2021.docx VIP
- XX市中医院骨科病房门拆除加宽改造工程预算清单(2025年).docx
文档评论(0)