第1-4章进程间通信.pdf

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

下载 下载 第1 4章 进程间通信 14.1 引言 第8章说明了进程控制原语并且观察了如何调用多个进程。但是这些进程之间交换信息的 唯一方法是经由f o r k或e x e c传送打开文件,或通过文件系统。本章将说明进程之间相互通信的 其他技术—I P C (InterProcess Communication )。 UNIX IPC 已经是而且继续是各种进程通信方式的统称,其中极少能在所有 U N I X 的实现中 进行移植。表 1 4 - 1列出了不同实现所支持的不同形式的I P C 。 表14-1 UNIX IPC I P C类型 管道(半双工) F I F O s(命令管道) 流管道(全双工) 命令流管道 消息队列 信号量 共享存储 套接口 流 正如上表所示,不管哪一种U N I X 实现,都可依靠的唯一一种I P C是半双工的管道。表中前 7种I P C通常限于同一台主机的各个进程间的 I P C 。最后两种;套接口和流,则支持不同主机上 各个进程间I P C (关于网络I P C 的详细情况,请参见S t e v e n s 〔1 9 9 0〕)。虽然中间三种形式的I P C (消息队列、信号量以及共享存储器)在表中说明为只受到系统V 的支持,但是在大多数制造 商所支持的,从伯克利U N I X 导出的U N I X系统中(例如,S u n O S 以及U l t r i x ),已经添加了这三 种形式的I P C 。 几个P O S I X 小组正在对I P C进行工作,但是最后结果还不很清楚,可能要到 1 9 9 4年甚至更迟一点与I P C有关的P O S I X才能制定出来。 我们将与I P C有关的讨论分成两章。本章将讨论经典的 I P C ;管道、F I F O 、消息队列、信 号量以及共享存储器。下一章将观察 S V R 4和4 . 3 + B S D共同支持的I P C 的某些高级特征,包括; 流管道和命名流管道,以及用这些更高级形式的 I P C可以做的一些事情。 14.2 管道 管道是UNIX IPC的最老形式,并且所有U N I X系统都提供此种通信机制,管道有两种限制; (1) 它们是半双工的。数据只能在一个方向上流动。 (2) 它们只能在具有公共祖先的进程之间使用。通常,一个管道由一个进程创建,然后该 第 1 4章 进程间通信 3 2 1 下载 进程调用f o r k ,此后父、子进程之间就可应用该管道。 我们将会看到流管道(见 1 5 . 2节)没有第一种限制,F I F O (见1 4 . 5节)和命名流管道(见 1 5 . 5节)则没有第二种限制。尽管有这两种限制,半双工管道仍是最常用的 I P C形式。 管道是由调用p i p e 函数而创建的。 #include <unistd.h> f i l e d e s [ 2 ] ) ; int pipe(int 返回:若成功则为 0,若出错则为- 1 经由参数f i l e d e s 返回两个文件描述符:f i l e d e s [ 0 ] 为读而打开,f i l e d e s [ 1 ] 为写而打开。f i l e d e s [ 1 ] 的输出是f i l e d e s [ 0 ] 的输入。 有两种方法来描绘一个管道,见图 1 4 - 1。左半图显示了管道的两端在一个进程中相互连接, 右半图则说明数据通过内核在管道中流动。 在S V R 4下,管道是双全工的。两个描述符都可用于读、写。于是,图 1 4 - 1中 的箭头在两端都有。我们称这种全双工管道为“流管道”,下一章将详细讨论这种 管道。因为P O S I X . 1 只提供半双工管道,为了可移植性

文档评论(0)

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

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

1亿VIP精品文档

相关文档