第1-2章高级I-O.pdf

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1-2章高级I-O

下载 第1 2章 高 级 I / O 12.1 引言 本章内容包括:非阻塞 I / O 、记录锁、系统 V 流机制、 I / O 多路转接( s e l e c t和p o l l 函数)、 r e a d v 和w r i t e v 函数,以及存储映照I / O (m m a p )。第1 4章、第 1 5章中的进程间通信,以及以后 各章中的很多实例都要使用本章所述的概念和函数。 12.2 非阻塞I / O 1 0 . 5节中曾将系统调用分成两类:低速系统调用和其他。低速系统调用是可能会使进程永 远阻塞的一类系统调用: • 如果数据并不存在,则读文件可能会使调用者永远阻塞(例如读管道,终端设备和网络设备)。 • 如果数据不能立即被接受,则写这些同样的文件也会使调用者永远阻塞。 • 在某些条件发生之前,打开文件会被阻塞(例如打开一个终端设备可能需等到与之连接 的调制解调器应答;又例如若以只写方式打开 F I F O ,那么在没有其他进程已用读方式打开该 F I F O时也要等待)。 • 对已经加上强制性记录锁的文件进行读、写。 • 某些i o c t l操作。 • 某些进程间通信函数(见第 1 4章)。 虽然读、写磁盘文件会使调用在短暂时间内阻塞,但并不能将它们视为“低速”。 非阻塞I / O使我们可以调用不会永远阻塞的 I / O操作,例如o p e n , r e a d和w r i t e 。如果这种操作 不能完成,则立即出错返回,表示该操作如继续执行将继续阻塞下去。 对于一个给定的描述符有两种方法对其指定非阻塞 I / O : (1) 如果是调用o p e n 以获得该描述符,则可指定O _ N O N B L O C K标志(见3 . 3节)。 (2) 对于已经打开的一个描述符,则可调用 f c n t l打开O _ N O N B L O C K文件状态标志(见3 . 1 3 节)。程序3 - 5 中的函数可用来为一个描述符打开任一文件状态标志。 早期的系统V版本使用标志O _ N D E L AY指定非阻塞方式。在这些版本中,如 果无数据可读,则r e a d 返回值0 。而U N I X 又常将r e a d 的返回值0解释为文件结束, 两者有所混淆。 P O S I X . 1 则提供了一个非阻塞标志,它的名字和语义都与 O _ N D E L AY不同。P O S I X . 1要求,对于一个非阻塞的描述符如果无数据可读,则 r e a d 返回 -1,并且e r r n o被设置为 E A G A I N 。S V R 4支持较老的 O _ N D E L AY 和 P O S I X . 1 的O _ N O N B L O C K ,但在本书的实例中只使用 P O S I X . 1 规定的特征。 O _ N D E L AY 的使用只是为了向后兼容,不应在新应用程序中使用。 4 . 3 B S D 为f c n t l提供F N D E L AY 标志,其语义也稍有区别。它不只影响该描述 符的文件状态标志,还将终端设备或套接口的标志更改成非阻塞的,因此影响了 终端或套接口的所有用户,不只是影响共享同一文件表项的用户( 4 . 3 B S D非阻塞 I / O 只对终端和套接口起作用)。如果对一个非阻塞描述符的操作不能无阻塞地完 2 7 4 U N I X环境高级编程 下载 成,那么4 . 3 B S D返回E W O U L D B L O C K 。4 . 3 + B S D提供P O S I X . 1 的O _ N O N B L O C K 标志,但其语义却类似于4 . 3 B S D 的F N D E L AY 。非阻塞I / O通常用来处理终端设备 或网络连接,而这些设备通常一次由一个进程使用。这就意味着 B S D语义的更改 通常不会影响我们。出错返回E W O U L D B L O C K而不是P O S I X . 1 的E A G A I N ,这造 成了可移植性问题,必须处理这一问题。 4 . 3 +

文档评论(0)

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

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

1亿VIP精品文档

相关文档