Linux集群体系结构03.pdf

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载 第3章 进程间通信 本章简介 • 用f o r k和e x e c l执行的子任务 • 发送信号和处理接收的信号 • 使用共享存储器区域 • 对共享数据使用信号量 • 消息传递:U D P 和T C P • 网际互连协议地址 • 通过网络传递消息 • 自动启动远程服务器 • 深入阅读 即使老练的软件开发人员—经验丰富、对 U n i x 内部有专业了解的 C程序员—对本章中 描述的一些较深奥技术可能也会感到很不舒服。本章是对用于集群软件开发的 C - U n i x接口技术 的复习。如果你对这类问题有信心,那么可以放心地跳过后面的任何或者所有小节。提供的范 例是为了便于你学习,还有一组完整的 C范例程序,可以编译和运行它们。源代码可以在本书 的We b 页(w w w. s a m s p u b l i s h i n g . c o m )上找到。我们希望你会改动并再次运行它们,以满足对 没有提到的细节的好奇心。 在这些范例中有意省略了很多对系统调用返回的错误的检查和处理,以保持程序清单 的简短并因此更具可读性。这些范例程序都在 Red Hat 4.2 版本的 L i n u x 内核2 . 0 . 3 0 环境下测 试过。 3.1 用f o r k和e x e c l执行的子任务 在C - U n i x 系统接口中,执行子任务需要进行系统调用,创建原始(父)进程的相同拷贝。 24第第L i n u x 集群体系结构 下载 当它返回时,子任务在自己的地址空间内运行,有它自己的进程 I D (即P I D )。现在存在两个相 同的进程,它们都接收同一个系统调用的返回结果,它们必须判断它们是担任父进程的角色, 还是子进程的角色,返回编码是表明这种区别的惟一途径。父进程收到其子任务的进程 I D ,子 进程收到 0 。下面的程序(见清单3 - 1 )示范了这种技术: 清单3-1 使用f o r k 的单一模块子任务 通常只编写一段程序,它支持两种角色。然而,还有另一种范型。保持支持子进程(子任 务)的代码简单,让系统调用指定另一个可执行程序在硬盘上的位置。另一个可执行程序包括 支持子任务的复杂代码。它开始执行,完全替代原来子任务在存储器中的映像并采用自己的进 程I D 。这些程序在清单3 - 2 a和3 - 2 b 中。 注意 e x e c l 函数需要可执行程序的完整路径名称。用你测试环境的路径代替这个字 符串。 第3章第进程间通信 第第2 5 下载 清单3-2a 父:使用f o r k和e x e c l 的子任务 清单3-2b 子:使用f o r k ()和e x e c l ()的子任务 26第第L i n u x 集群体系结构 下载 这两个系统调用是 f o r k和e x e c l 。(e x e c l实际上是一系列名称类似的函数之一。本书的重点 在于e x e c l变体,它与用来启动进程的常见命令行语法类似。)对f o r k 的调用创建第二个相同的 进程,父进程的克隆。对 e x e c l 的调用导致进行调用的进程被完全替换,在存储器中被指定的可 执行程序覆盖。牢记,成功的 e x e c l调用是不向进行调用的进程返回值的! 你可能希望开发包含支持父和子任务二者的单一模块。在这种情况下,使用 f o r k调用的返 回值来控制接下来执行模块的哪个部分。 f o r k调用总是把子进程的 I D返回给父进程,而把 0返 回给子进程。(参见清单3 - 1 。如果你编译并运行这个程序,会注意到

文档评论(0)

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

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

1亿VIP精品文档

相关文档