.SSH:UNIX-UNIX环境高级编程5.pdfVIP

  1. 1、本文档共19页,可阅读全部内容。
  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文档。上传文档
查看更多
下载 第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/

文档评论(0)

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

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

1亿VIP精品文档

相关文档