卷II.qxd



Similar documents
说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,


评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

深圳市新亚电子制程股份有限公司

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和


I

课程类 别

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

年 第 期 % %! & % % % % % % &


伊 犁 师 范 学 院 611 语 言 学 概 论 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 语 言 学 纲 要 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 效

Template BR_Rec_2005.dot

中 国 软 科 学 年 第 期!!!

《C语言基础入门》课程教学大纲

珠江钢琴股东大会

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

Microsoft Word - 文件汇编.doc

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

教师上报成绩流程图

Microsoft Word - 第7章 图表反转形态.doc

修改版-操作手册.doc

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日

登录、注册功能的测试用例设计.doc

2006年顺德区高中阶段学校招生录取分数线

ETF、分级基金规模、份额变化统计

上海证券交易所会议纪要

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

徐天宏:《基因天堂》.doc

 编号:

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

证券代码: 证券简称:长城电脑 公告编号:

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

<4D F736F F D20D0A3B7A2A1B A1B BAC5B9D8D3DAD7E9D6AFBFAAD5B9C8ABD0A3BDCCD6B0B9A4B8DACEBBC6B8D3C3B1E4B6AFB9A4D7F7B5C4CDA8D6AA2E646F63>

第2章 数据类型、常量与变量

2016年南开大学MBA招生信息


马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

( 此 页 无 正 文, 为 广 东 东 方 精 工 科 技 股 份 有 限 公 司 关 于 提 供 资 料 真 实 准 确 和 完 整 的 承 诺 函 之 签 署 页 ) 广 东 东 方 精 工 科 技 股 份 有 限 公 司 法 定 代 表 人 : 唐 灼 林 2016 年 7 月 28 日

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

公 开 刊 物 须 有 国 内 统 一 刊 (CN), 发 表 文 章 的 刊 物 需 要 在 国 家 新 闻 出 版 广 电 总 局 ( 办 事 服 务 便 民 查 询 新 闻 出 版 机 构 查 询 ) 上 能 够 查 到 刊 凡 在 有 中 国 标 准 书 公 开

2014年中央财经大学研究生招生录取工作简报


内 容 二 : 建 立 并 完 善 了 三 点 的 网 络 教 学 管 理 体 系 内 容 三 : 注 重 培 养 学 生 的 听 说 能 力 14

抗 日 战 争 研 究! 年 第 期 # # # # #!!!!!!!! #!!

国债回购交易业务指引

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

第 三 章 审 计 证 据 2

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

学 年 第 二 学 期 集 中 考 试 安 排 (18 周 ) 考 试 日 期 :6 月 27 日 星 期 一 8:10-9:50 第 二 公 共 教 学 楼 A 区 A 高 等 数 学 ( 理 二 2) 复 材 材 料 科 学 与 工 程

关于修订《沪市股票上网发行资金申购

第1篇 道路桥梁工程技术核心专业课程标准及学习绩效考评体系

现 场 会 议 时 间 为 :2016 年 5 月 19 日 网 络 投 票 时 间 为 :2016 年 5 月 18 日 年 5 月 19 日 其 中 通 过 深 圳 证 券 交 易 所 交 易 系 统 进 行 网 络 投 票 的 时 间 为 2016 年 5 月 19 日 9:30-

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起


2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

办 法 >( 修 订 稿 ) 的 议 案 关 于 提 请 任 子 行 网 络 技 术 股 份 有 限 公 司 股 东 大 会 授 权 董 事 会 办 理 公 司 限 制 性 股 票 激 励 计 划 相 关 事 宜 的 议 案 确 定 公 司 的 限 制 性 股 票 激 励 计 划 相 关 事 项 如

年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>


中 中 中 中 部 中 岗 位 条 件 历 其 它 历 史 师 地 理 师 生 物 师 体 与 健 康 师 从 事 中 历 史 工 从 事 中 地 理 工 从 事 中 生 物 工 从 事 中 体 与 健 康 工 2. 课 程 与 论 ( 历 史 ); 2. 科 ( 历 史 )

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

用节点法和网孔法进行电路分析

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

境 外 上 市 外 资 股 股 东 持 有 股 份 总 数 (H 股 ) 489,157,907 3 出 席 会 议 的 股 东 所 持 有 表 决 权 股 份 数 占 公 司 有 表 决 权 股 份 总 数 的 其 中 :A 股 股 东 持 股 占 股 份 总 数 的

上证指数

西 南 民 族 学 院 学 报 哲 学 社 会 科 学 版 第 卷 资 料 来 源 中 国 统 计 年 鉴 年 年 新 中 国 五 十 年 统 计 资 料 汇 编 中 国 人 口 统 计 年 鉴 年 数 据 资 料 来 源 中 国 统 计 年 鉴 中 国 统 计 出 版 社 年 版 资 料 来 源

上海证券交易所会议纪要

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

光明乳业股份有限公司

<4D F736F F D20C6F3D2B5C5E0D1B5CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件

北京信息科技大学本科学生成绩管理办法

2009—2010级本科课程教学大纲与课程简介格式

一、资质申请

øÕªß∂À≤Ÿ◊˜ ÷≤·

<4D F736F F D20D6D8D3CA3535BAC5B9D8D3DAD3A1B7A2A1B6D6D8C7ECD3CAB5E7B4F3D1A7D1A7CABFD1A7CEBBCADAD3E8B9A4D7F7CFB8D4F2A1B7B5C4CDA8D6AA2E646F63>

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

全国教师资格认定管理信息系统

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术

名 非 关 联 董 事 对 该 议 案 进 行 了 逐 项 表 决 : 1 募 集 资 金 总 额 及 募 投 项 目 本 次 调 整 前 : 本 次 非 公 开 发 行 股 票 拟 募 集 资 金 总 额 为 不 超 过 60,000 万 元, 项 目 建 设 为 开 放 平 台 ( 运 营 管


物 流 从 业 人 员 职 业 能 力 等 级 证 书 分 为 四 个 级 别, 分 别 为 初 级 助 理 级 中 级 和 高 级 ; 采 购 从 业 人 员 职 业 能 力 等 级 证 书 分 为 三 个 级 别, 分 别 为 中 级 高 级 和 注 册 级 请 各 有 关 单 位 按 照 通

21 业 余 制 -- 高 起 专 (12 级 ) 75 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 江 西 化 校 工 科 22 业 余 制 -- 高 起 专 (12 级 ) 70 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 吉

国 际 中 国 研 究 动 态 是 中 国 社 会 科 学 院 国 际 中 国 学 研 究 中 心 出 品 的 以 介 绍 国 际 中 国 问 题 研 究 最 新 成 果 为 宗 旨 的 电 子 杂 志 计 划 每 月 出 版 一 期 除 编 译 和 摘 编 网 络 和 中 外 期 刊 库 上 可

Transcription:

UNIX Network Programming Volume 2: Interprocess Communications Second Edition UNIX 网 络 编 程 卷 2: 进 程 间 通 信 ( 第 2 版 英 文 版 ) [ 美 ] W. Richard Stevens 著 人 民 邮 电 出 版 社 北 京

内 容 提 要 本 书 是 一 部 UNIX 网 络 编 程 的 经 典 之 作 进 程 间 通 信 (IPC) 几 乎 是 所 有 Unix 程 序 性 能 的 关 键, 理 解 IPC 也 是 理 解 如 何 开 发 不 同 主 机 间 网 络 应 用 程 序 的 必 要 条 件 本 书 从 对 Posix IPC 和 System V IPC 的 内 部 结 构 开 始 讨 论, 全 面 深 入 地 介 绍 了 4 种 IPC 形 式 : 消 息 传 递 ( 管 道 FIFO 消 息 队 列 ) 同 步 ( 互 斥 锁 条 件 变 量 读 写 锁 文 件 与 记 录 锁 信 号 量 ) 共 享 内 存 ( 匿 名 共 享 内 存 具 名 共 享 内 存 ) 及 远 程 过 程 调 用 (Solaris 门 Sun RPC) 附 录 中 给 出 了 测 量 各 种 IPC 形 式 性 能 的 方 法 本 书 内 容 详 尽 且 具 权 威 性, 几 乎 每 章 都 提 供 精 选 的 习 题, 并 提 供 了 部 分 习 题 的 答 案, 是 网 络 研 究 和 开 发 人 员 理 想 的 参 考 书 著 [ 美 ] W. Richard Stevens 责 任 编 辑 杨 海 玲 责 任 印 制 张 佳 莹 焦 志 炜 人 民 邮 电 出 版 社 出 版 发 行 北 京 市 丰 台 区 成 寿 寺 路 11 号 邮 编 100164 电 子 邮 件 315@ptpress.com.cn 网 址 http://www.ptpress.com.cn 北 京 ****** 印 刷 开 本 :800 1000 1/16 印 张 :36 字 数 :692 千 字 2016 年 2 月 第 2 版 印 数 :1-2 000 册 2016 年 2 月 北 京 第 1 次 印 刷 著 作 权 合 同 登 记 号 图 字 :01-2009-5714 号 定 价 :89.00 元 读 者 服 务 热 线 :(010)81055410 印 装 质 量 热 线 :(010)81055316 反 盗 版 热 线 :(010)81055315

版 权 声 明 Original edition, entitled UNIX Network Programming, Volume 2: Interprocess Communications, Second Edition, 9780130810816 by W. Richard Stevens, published by Pearson Education, Inc., Copyright 1999 by Prentice Hall PTR. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. China edition published by PEARSON EDUCATION ASIA LTD., and POSTS & TELECOM PRESS Copyright 2016. This edition is manufactured in the People s Republic of China, and is authorized for sale only in the People s Republic of China excluding Hong Kong, Macao and Taiwan. 本 书 封 面 贴 有 Pearson Education( 培 生 教 育 出 版 集 团 ) 激 光 防 伪 标 签, 无 标 签 者 不 得 销 售

前 言 概 述 大 多 数 重 要 的 程 序 都 涉 及 进 程 间 通 信 (Interprocess Communication, IPC) 这 是 受 下 述 设 计 原 则 影 响 的 自 然 结 果 : 把 应 用 程 序 设 计 为 一 组 相 互 通 信 的 小 片 断 比 将 其 设 计 为 单 个 庞 大 的 程 序 更 好 从 历 史 角 度 看, 应 用 程 序 有 如 下 几 种 构 建 方 法 (1) 用 一 个 庞 大 的 程 序 完 成 全 部 工 作 程 序 的 各 部 分 可 以 实 现 为 函 数, 函 数 之 间 通 过 参 数 返 回 值 和 全 局 变 量 来 交 换 信 息 (2) 使 用 多 个 程 序, 程 序 之 间 用 某 种 形 式 的 IPC 进 行 通 信 许 多 标 准 的 Unix 工 具 都 是 按 这 种 风 格 设 计 的, 它 们 使 用 shell 管 道 (IPC 的 一 种 形 式 ) 在 程 序 之 间 传 递 信 息 (3) 使 用 一 个 包 含 多 个 线 程 的 程 序, 线 程 之 间 使 用 某 种 IPC 这 里 仍 然 使 用 术 语 IPC, 尽 管 通 信 是 在 线 程 之 间 而 不 是 在 进 程 之 间 进 行 的 还 可 以 把 后 两 种 设 计 形 式 结 合 起 来 : 用 多 个 进 程 来 实 现, 其 中 每 个 进 程 包 含 几 个 线 程 在 这 种 情 况 下, 进 程 内 部 的 线 程 之 间 可 以 通 信, 不 同 的 进 程 之 间 也 可 以 通 信 上 面 讲 述 了 可 以 把 完 成 给 定 任 务 所 需 的 工 作 分 到 多 个 进 程 中, 或 许 还 可 以 进 一 步 分 到 进 程 内 的 多 个 线 程 中 在 包 含 多 个 处 理 器 (CPU) 的 系 统 中, 多 个 进 程 也 许 可 以 ( 在 不 同 的 CPU 上 ) 同 时 运 行, 或 许 给 定 进 程 内 的 多 个 线 程 也 能 同 时 运 行 因 此, 把 任 务 分 到 多 个 进 程 或 线 程 中 有 望 减 少 完 成 指 定 任 务 的 时 间 本 书 详 细 描 述 了 以 下 4 种 不 同 的 IPC 形 式 :

ii UNIX Network Programming 前 言 (1) 消 息 传 递 ( 管 道 FIFO 和 消 息 队 列 ); (2) 同 步 ( 互 斥 量 条 件 变 量 读 写 锁 文 件 和 记 录 锁 信 号 量 ); (3) 共 享 内 存 ( 匿 名 的 和 具 名 的 ); (4) 远 程 过 程 调 用 (Solaris 门 和 Sun RPC) 本 书 不 讨 论 如 何 编 写 通 过 计 算 机 网 络 通 信 的 程 序 这 种 通 信 通 常 涉 及 使 用 TCP/IP 协 议 族 的 套 接 字 API, 相 关 主 题 在 第 1 卷 [Stevens 1998] 中 有 详 细 讨 论 有 人 可 能 会 提 出 质 疑 : 不 应 该 使 用 单 主 机 或 非 网 络 IPC( 本 卷 的 主 题 ), 所 有 程 序 都 应 该 在 网 络 上 的 多 台 主 机 上 同 时 运 行 但 在 日 常 实 践 中, 单 主 机 IPC 往 往 比 网 络 通 信 快 得 多, 而 且 有 时 还 简 单 些 共 享 内 存 同 步 等 方 法 通 常 也 只 能 用 于 单 主 机, 跨 网 络 时 可 能 无 法 使 用 经 验 和 历 史 表 明, 非 网 络 IPC( 本 卷 ) 与 跨 网 络 IPC( 第 1 卷 ) 都 是 需 要 的 本 卷 建 立 在 第 1 卷 和 我 写 的 另 外 4 本 书 的 基 础 上, 这 5 本 书 在 本 书 中 简 记 如 下 : UNPv1:UNIX Network Programming, Volume 1 [Stevens 1998]; APUE:Advanced Programming in the UNIX Environment [Stevens 1992]; TCPv1:TCP/IP Illustrated, Volume 1 [Stevens 1994]; TCPv2:TCP/IP Illustrated, Volume 2 [Wright and Stevens 1995]; TCPv3:TCP/IP Illustrated, Volume 3 [Stevens 1996] 在 一 本 以 网 络 编 程 为 书 名 一 部 分 的 书 中 讨 论 IPC 看 似 有 点 奇 怪, 但 事 实 上 IPC 经 常 用 于 网 络 应 用 程 序 我 在 UNIX 网 络 编 程 1990 年 版 的 前 言 里 就 指 出 : 想 知 道 如 何 为 网 络 开 发 软 件, 必 须 先 理 解 进 程 间 通 信 (IPC) 与 第 1 版 的 区 别 本 书 完 全 重 写 并 扩 充 了 1990 年 版 UNIX 网 络 编 程 的 第 3 章 和 第 18 章 字 数 统 计 表 明, 现 在 的 内 容 是 第 1 版 的 5 倍 新 版 的 主 要 改 动 归 纳 如 下 不 仅 讨 论 了 System V IPC 的 三 种 形 式 ( 消 息 队 列 信 号 量 以 及 共 享 内 存 ), 还 对 实 现 了 这 些 IPC 的 新 的 Posix 函 数 进 行 了 介 绍 (1.7 节 将 详 细 介 绍 Posix 标 准 族 ) 我 认 为 使 用 Posix IPC 函 数 是 大 势 所 趋, 因 为 它 们 比 System V 中 的 相 应 部 分 更 具 优 势 讨 论 了 用 于 同 步 的 Posix 函 数 : 互 斥 锁 条 件 变 量 以 及 读 写 锁 它 们 可 用 于 线 程 或 进 程 的 同 步, 而 且 往 往 在 访 问 共 享 内 存 时 使 用 本 卷 假 定 使 用 Posix 线 程 环 境 ( 称 为 Pthreads ), 许 多 示 例 都 是 用 多 线 程 而 不 是 多 进 程 构 建 的 对 管 道 FIFO 和 记 录 锁 的 讨 论 侧 重 于 从 它 们 的 Posix 定 义 出 发 本 卷 不 仅 描 述 了 IPC 机 制 及 其 使 用 方 法, 还 实 现 了 Posix 消 息 队 列 读 写 锁 与 Posix 信 号 量 ( 都 可 以 实 现 为 用 户 库 ) 这 些 实 现 可 以 把 多 种 不 同 的 特 性 捆 绑 起 来 ( 例 如,Posix 信 号 量 的 一 种 实 现 用 到 了 互 斥 量 条 件 变 量 和 内 存 映 射 I/O), 还 强

UNIX Network Programming 前 言 iii 读 者 对 象 调 了 我 们 在 应 用 程 序 中 经 常 要 处 理 的 一 些 问 题 ( 如 竞 争 状 态 错 误 处 理 内 存 泄 漏 和 变 长 参 数 列 表 ) 理 解 某 种 特 性 的 实 现 通 常 有 助 于 了 解 如 何 使 用 该 特 性 对 RPC 的 讨 论 侧 重 于 Sun 的 RPC 包 在 此 之 前 讲 述 了 新 的 Solaris 门 API, 它 类 似 于 RPC 但 用 于 单 主 机 这 么 一 来 我 们 就 介 绍 了 许 多 在 调 用 其 他 进 程 中 的 过 程 时 需 要 考 虑 的 特 性, 而 不 用 关 心 网 络 方 面 的 细 节 本 书 既 可 以 用 作 IPC 的 教 程, 也 可 以 用 作 有 经 验 的 程 序 员 的 参 考 书 全 书 划 分 为 以 下 4 个 主 要 部 分 : 消 息 传 递 ; 同 步 ; 共 享 内 存 ; 远 程 过 程 调 用 但 许 多 读 者 可 能 只 对 特 定 的 部 分 感 兴 趣 第 2 章 总 结 了 所 有 Posix IPC 函 数 共 有 的 特 性, 第 3 章 归 纳 了 所 有 System V IPC 函 数 共 有 的 特 性, 第 12 章 介 绍 了 Posix 和 System V 的 共 享 内 存, 但 书 中 多 数 章 节 都 可 以 独 立 于 其 他 章 节 阅 读 所 有 读 者 都 应 该 阅 读 第 1 章, 尤 其 是 1.6 节, 该 节 介 绍 了 一 些 贯 穿 全 书 的 包 装 函 数 讨 论 Posix IPC 的 各 章 与 讨 论 System V IPC 的 各 章 彼 此 独 立, 有 关 管 道 FIFO 和 记 录 锁 的 几 章 不 属 于 上 述 两 个 阵 营, 关 于 RPC 的 两 章 也 独 立 于 其 他 IPC 方 法 为 了 方 便 读 者 把 本 书 作 为 参 考 书, 本 书 提 供 了 完 整 的 全 文 索 引, 并 在 最 后 几 页 总 结 了 每 个 函 数 和 结 构 的 详 细 描 述 在 正 文 中 的 哪 里 可 以 找 到 为 了 给 不 按 顺 序 阅 读 本 书 的 读 者 提 供 方 便, 我 们 在 书 中 为 各 个 主 题 提 供 了 大 量 的 交 叉 引 用 源 代 码 与 勘 误 致 谢 书 中 所 有 示 例 的 源 代 码 可 以 从 作 者 主 页 ( 列 在 前 言 的 最 后 ) 获 得 1 学 习 本 书 讲 述 的 IPC 技 术 的 最 好 方 法 就 是 下 载 这 些 程 序, 对 其 进 行 修 改 和 改 进 只 有 这 样 实 际 编 写 代 码 才 能 深 入 理 解 有 关 概 念 和 方 法 每 章 末 尾 提 供 了 大 量 的 习 题, 大 部 分 在 附 录 D 中 给 出 答 案 本 书 的 最 新 勘 误 表 也 可 以 从 作 者 主 页 获 取 尽 管 封 面 上 只 出 现 了 作 者 一 个 人 的 名 字, 但 一 本 高 质 量 的 书 的 出 版 需 要 许 多 人 的 共 同 努 力 首 先 要 感 谢 我 的 家 人, 他 们 在 我 写 书 的 那 段 时 间 里 承 担 了 一 切 再 次 感 谢 你 1 书 中 所 有 示 例 的 源 代 码 也 可 以 从 异 步 社 区 http: //www.epubit.com.cn/book/details/4088 免 费 注 册 下 载 编 者 注

iv UNIX Network Programming 前 言 版 权 说 明 们 :Sally Bill Ellen 和 David 感 谢 技 术 审 稿 人 给 出 的 宝 贵 的 反 馈 意 见 ( 打 印 出 来 有 135 页 ) 他 们 发 现 了 许 多 错 误, 指 出 了 需 要 更 多 解 释 的 地 方, 并 对 表 达 用 词 和 代 码 提 出 了 许 多 修 改 建 议, 他 们 是 Gavin Bowe Allen Briggs Dave Butenhof Wan- Teh Chang Chris Cleeland Bob Friesenhahn Andrew Gierth Scott Johnson Marty Leisner Larry McVoy Craig Metz Bob Nelson Steve Rago Jim Reid Swamy K. Sitarama Jon C. Snader Ian Lance Taylor Rich Teer 和 Andy Tucker 下 列 诸 位 通 过 电 子 邮 件 回 答 过 我 的 问 题, 有 人 甚 至 回 答 过 很 多 问 题 澄 清 这 些 问 题 提 高 了 本 书 的 准 确 性 并 改 进 了 语 言 表 达, 他 们 是 David Bausum Dave Butenhof Bill Gallmeister Mukesh Kacker Brian Kernighan Larry McVoy Steve Rago Keith Skowran Bart Smaalders Andy Tucker 和 John Wait 特 别 感 谢 GSquared 的 Larry Rafsky 提 供 了 很 多 帮 助 像 以 往 一 样, 感 谢 国 家 光 学 天 文 台 (NOAO) Sidney Wolff Richard Wolff 和 Steve Grandi, 他 们 为 我 提 供 了 网 络 与 主 机 的 访 问 权 限 DEC 公 司 的 Jim Bound Matt Thomas Mary Clouter 和 Barb Glover 提 供 了 用 于 本 书 多 数 示 例 的 Alpha 系 统 书 中 的 一 部 分 代 码 是 在 其 他 Unix 系 统 上 测 试 的 : 感 谢 Red Hat 软 件 公 司 的 Michael Johnson 提 供 了 最 新 版 本 的 Red Hat Linux, 感 谢 IBM 奥 斯 汀 实 验 室 的 Dave Marquardt 和 Jessie Haug 提 供 了 RS/6000 系 统 以 及 最 新 版 本 的 AIX 的 访 问 权 限 最 后 还 要 感 谢 Prentice Hall 的 优 秀 员 工 ( 本 书 的 编 辑 Mary Franz, 还 有 Noreen Regina Sophie Papanikolaou 和 Patti Guerrieri) 给 予 的 帮 助, 尤 其 是 在 很 紧 的 时 间 内 完 成 一 切 所 付 出 的 努 力 我 制 作 了 本 书 的 最 终 电 子 版 (PostScript 格 式 ), 最 后 排 版 成 现 在 的 书 我 用 James Clark 编 写 的 优 秀 的 groff 包 为 本 书 排 版, 该 软 件 包 安 装 在 一 台 运 行 Solaris 2.6 的 SparcStation 工 作 站 上 ( 认 为 troff 已 经 过 时 的 报 导 显 然 太 夸 张 了 ) 我 使 用 vi 编 辑 器 键 入 了 所 有 的 138 897 个 单 词, 用 gpic 程 序 绘 制 了 72 幅 插 图 ( 其 中 用 到 了 许 多 由 Gary Wright 编 写 的 宏 ), 用 gtbl 程 序 生 成 了 35 张 表 格, 为 全 书 添 加 了 索 引 ( 用 到 了 Jon Bentley 与 Brian Kernighan 编 写 的 一 组 awk 脚 本 ), 并 设 计 了 最 终 的 版 式 我 录 入 书 中 的 8 046 行 C 语 言 源 代 码, 使 用 的 是 Dave Hanson 的 loom 程 序 GNU 的 indent 程 序 和 Gary Wright 写 的 一 些 脚 本 欢 迎 读 者 以 电 子 邮 件 的 方 式 反 馈 意 见 提 出 建 议 或 订 正 错 误 W. Richard Stevens 1998 年 7 月 于 亚 利 桑 那 州 图 森 市 http://www.kohala.com/~rstevens

目 录 Part 1. Introduction / 简 介 1 Chapter 1. Introduction / 简 介 3 1.1 Introduction / 概 述 3 1.2 Processes, Threads, and the Sharing of Information / 进 程 线 程 与 信 息 共 享 5 1.3 Persistence of IPC Objects / IPC 对 象 的 持 续 性 6 1.4 Name Spaces / 名 字 空 间 7 1.5 Effect of fork, exec, and exit on IPC Objects / fork exec 和 exit 对 IPC 对 象 的 影 响 9 1.6 Error Handling: Wrapper Functions / 错 误 处 理 : 包 装 函 数 11 1.7 Unix Standards / Unix 标 准 13 1.8 Road Map to IPC Examples in the Text / 本 书 中 IPC 示 例 的 路 线 图 15 1.9 Summary / 小 结 16 Chapter 2. Posix IPC 19 2.1 Introduction / 概 述 19 2.2 IPC Names / IPC 名 字 19 2.3 Creating and Opening IPC Channels / 创 建 与 打 开 IPC 通 道 22 2.4 IPC Permissions / IPC 权 限 25 2.5 Summary / 小 结 26

ii UNIX Network Programming 目 录 Chapter 3. System V IPC 27 3.1 Introduction / 概 述 27 3.2 key_t Keys and ftok Function / key_t 键 和 ftok 函 数 28 3.3 ipc_perm Structure / ipc_perm 结 构 30 3.4 Creating and Opening IPC Channels / 创 建 与 打 开 IPC 通 道 30 3.5 IPC Permissions / IPC 权 限 32 3.6 Identifier Reuse / 标 识 符 重 用 34 3.7 ipcs and ipcrm Programs / ipcs 和 ipcrm 程 序 36 3.8 Kernel Limits / 内 核 限 制 36 3.9 Summary / 小 结 38 Part 2. Message Passing / 消 息 传 递 41 Chapter 4. Pipes and FIFOs / 管 道 和 FIFO 43 4.1 Introduction / 概 述 43 4.2 A Simple Client-Server Example / 一 个 简 单 的 客 户 - 服 务 器 示 例 43 4.3 Pipes / 管 道 44 4.4 Full-Duplex Pipes / 全 双 工 管 道 50 4.5 popen and pclose Functions / popen 和 pclose 函 数 52 4.6 FIFOs 54 4.7 Additional Properties of Pipes and FIFOs / 管 道 和 FIFO 的 额 外 属 性 58 4.8 One Server, Multiple Clients / 单 服 务 器, 多 客 户 60 4.9 Iterative versus Concurrent Servers / 迭 代 服 务 器 与 并 发 服 务 器 的 比 较 66 4.10 Streams and Messages / 流 与 消 息 67 4.11 Pipe and FIFO Limits / 管 道 和 FIFO 限 制 72 4.12 Summary / 小 结 73 Chapter 5. Posix Message Queues / Posix 消 息 队 列 75 5.1 Introduction / 概 述 75 5.2 mq_open, mq_close, and mq_unlink Functions / mq_open mq_close 和 mq_unlink 函 数 76 5.3 mq_getattr and mq_setattr Functions / mq_getattr 和 mq_setattr 函 数 79 5.4 mq_send and mq_receive Functions / mq_send 和 mq_receive 函 数 82 5.5 Message Queue Limits / 消 息 队 列 限 制 86 5.6 mq_notify Function / mq_notify 函 数 87 5.7 Posix Realtime Signals / Posix 实 时 信 号 98 5.8 Implementation Using Memory-Mapped I/O / 使 用 内 存 映 射 I/O 实 现 106 5.9 Summary / 小 结 126 Chapter 6. System V Message Queues / System V 消 息 队 列 129 6.1 Introduction / 概 述 129 6.2 msgget Function / msgget 函 数 130 6.3 msgsnd Function / msgsnd 函 数 131

UNIX Network Programming 目 录 iii 6.4 msgrcv Function / msgrcv 函 数 132 6.5 msgctl Function / msgctl 函 数 134 6.6 Simple Programs / 简 单 的 程 序 135 6.7 Client-Server Example / 客 户 - 服 务 器 示 例 140 6.8 Multiplexing Messages / 多 路 复 用 消 息 142 6.9 Message Queues with select and poll / 消 息 队 列 上 使 用 select 和 poll 151 6.10 Message Queue Limits / 消 息 队 列 限 制 152 6.11 Summary / 小 结 155 Part 3. Synchronization / 同 步 157 Chapter 7. Mutexes and Condition Variables / 互 斥 锁 和 条 件 变 量 159 7.1 Introduction / 概 述 159 7.2 Mutexes: Locking and Unlocking / 互 斥 锁 : 加 锁 与 解 锁 159 7.3 Producer-Consumer Problem / 生 产 者 - 消 费 者 问 题 161 7.4 Locking versus Waiting / 加 锁 与 等 待 165 7.5 Condition Variables: Waiting and Signaling / 条 件 变 量 : 等 待 与 信 号 发 送 167 7.6 Condition Variables: Timed Waits and Broadcasts / 条 件 变 量 : 定 时 等 待 和 广 播 171 7.7 Mutexes and Condition Variable Attributes / 互 斥 锁 和 条 件 变 量 的 属 性 172 7.8 Summary / 小 结 174 Chapter 8. Read-Write Locks / 读 写 锁 177 8.1 Introduction / 概 述 177 8.2 Obtaining and Releasing Read-Write Locks / 获 取 与 释 放 读 写 锁 178 8.3 Read-Write Lock Attributes / 读 写 锁 属 性 179 8.4 Implementation Using Mutexes and Condition Variables / 使 用 互 斥 锁 和 条 件 变 量 实 现 179 8.5 Thread Cancellation / 线 程 取 消 187 8.6 Summary / 小 结 192 Chapter 9. Record Locking / 记 录 加 锁 193 9.1 Introduction / 概 述 193 9.2 Record Locking versus File Locking / 记 录 加 锁 与 文 件 加 锁 197 9.3 Posix fcntl Record Locking /Posix fcntl 记 录 加 锁 199 9.4 Advisory Locking / 劝 告 性 加 锁 203 9.5 Mandatory Locking / 强 制 性 加 锁 204 9.6 Priorities of Readers and Writers / 读 出 者 和 写 入 者 的 优 先 级 207 9.7 Starting Only One Copy of a Daemon / 只 启 动 守 护 进 程 的 一 个 副 本 213 9.8 Lock Files / 锁 文 件 214 9.9 NFS Locking / NFS 加 锁 216 9.10 Summary / 小 结 216

iv UNIX Network Programming 目 录 Chapter 10. Posix Semaphores / Posix 信 号 量 219 10.1 Introduction / 概 述 219 10.2 sem_open, sem_close, and sem_unlink Functions / sem_open sem_close 和 sem_unlink 函 数 225 10.3 sem_wait and sem_trywait Functions / sem_wait 和 sem_trywait 函 数 226 10.4 sem_post and sem_getvalue Functions / sem_post 和 sem_getvalue 函 数 227 10.5 Simple Programs / 简 单 的 程 序 228 10.6 Producer-Consumer Problem / 生 产 者 - 消 费 者 问 题 233 10.7 File Locking / 文 件 加 锁 238 10.8 sem_init and sem_destroy Functions / sem_init 和 sem_destroy 函 数 238 10.9 Multiple Producers, One Consumer / 多 生 产 者, 单 消 费 者 242 10.10 Multiple Producers, Multiple Consumers / 多 生 产 者, 多 消 费 者 245 10.11 Multiple Buffers / 多 缓 冲 区 249 10.12 Sharing Semaphores between Processes / 进 程 间 共 享 信 号 量 256 10.13 Semaphore Limits / 信 号 量 限 制 257 10.14 Implementation Using FIFOs / 使 用 FIFO 实 现 257 10.15 Implementation Using Memory-Mapped I/O / 使 用 内 存 映 射 I/O 实 现 262 10.16 Implementation Using System V Semaphores / 使 用 System V 信 号 量 实 现 271 10.17 Summary / 小 结 278 Chapter 11. System V Semaphores / System V 信 号 量 281 11.1 Introduction / 概 述 281 11.2 semget Function / semget 函 数 282 11.3 semop Function / semop 函 数 285 11.4 semctlfunction / semctl 函 数 287 11.5 Simple Programs / 简 单 的 程 序 289 11.6 File Locking / 文 件 加 锁 294 11.7 Semaphore Limits / 信 号 量 限 制 296 11.8 Summary / 小 结 300 Part 4. Shared Memory / 共 享 内 存 301 Chapter 12. Shared Memory Introduction / 共 享 内 存 简 介 303 12.1 Introduction / 概 述 303 12.2 mmap, munmap, and msync Functions / mmap munmap 和 msync 函 数 307 12.3 Increment Counter in a Memory-Mapped File / 内 存 映 射 文 件 中 的 计 数 器 递 加 311 12.4 4.4BSD Anonymous Memory Mapping / 4.4BSD 匿 名 内 存 映 射 315 12.5 SVR4 /dev/zero Memory Mapping / SVR4 /dev/zero 内 存 映 射 316 12.6 Referencing Memory-Mapped Objects / 引 用 内 存 映 射 的 对 象 317

UNIX Network Programming 目 录 v 12.7 Summary / 小 结 322 Chapter 13. Posix Shared Memory / Posix 共 享 内 存 325 13.1 Introduction / 概 述 325 13.2 shm_open and shm_unlink Functions / shm_open 和 shm_unlink 函 数 326 13.3 ftruncate and fstat Functions / ftruncate 和 fstat 函 数 327 13.4 Simple Programs / 简 单 的 程 序 328 13.5 Incrementing a Shared Counter / 共 享 计 数 器 递 加 333 13.6 Sending Messages to a Server / 向 服 务 器 发 送 消 息 336 13.7 Summary / 小 结 342 Chapter 14. System V Shared Memory / System V 共 享 内 存 343 14.1 Introduction / 概 述 343 14.2 shmget Function / shmget 函 数 343 14.3 shmat Function / shmat 函 数 344 14.4 shmdt Function / shmdt 函 数 345 14.5 shmctl Function / shmctl 函 数 345 14.6 Simple Programs / 简 单 的 程 序 346 14.7 Shared Memory Limits / 共 享 内 存 限 制 349 14.8 Summary / 小 结 351 Part 5. Remote Procedure Calls / 远 程 过 程 调 用 353 Chapter 15. Doors / 门 355 15.1 Introduction / 概 述 355 15.2 door_call Function / door_call 函 数 361 15.3 door_create Function / door_create 函 数 363 15.4 door_return Function / door_return 函 数 364 15.5 door_cred Function / door_cred 函 数 365 15.6 door_info Function / door_info 函 数 365 15.7 Examples / 示 例 366 15.8 Descriptor Passing / 描 述 符 传 递 379 15.9 door_server_create Function / door_server_create 函 数 384 15.10 door_bind, door_unbind, and door_revoke Functions / door_bind door_unbind 和 door_revoke 函 数 390 15.11 Premature Termination of Client or Server / 客 户 或 服 务 器 的 过 早 终 止 390 15.12 Summary / 小 结 397 Chapter 16. Sun RPC 399 16.1 Introduction / 概 述 399 16.2 Multithreading / 多 线 程 技 术 407 16.3 Server Binding / 服 务 器 绑 定 411 16.4 Authentication / 鉴 别 414 16.5 Timeout and Retransmission / 超 时 和 重 传 417

vi UNIX Network Programming 目 录 16.6 Call Semantics / 调 用 语 义 422 16.7 Premature Termination of Client or Server / 客 户 或 服 务 器 的 过 早 终 止 424 16.8 XDR: External Data Representation / XDR: 外 部 数 据 表 示 426 16.9 RPC Packet Formats / RPC 分 组 格 式 444 16.10 Summary / 小 结 449 Epilogue / 后 记 453 Appendix A. Performance Measurements / 性 能 测 量 457 A.1 Introduction / 概 述 457 A.2 Results / 结 果 458 A.3 Message Passing Bandwidth Programs / 消 息 传 递 带 宽 程 序 467 A.4 Message Passing Latency Programs / 消 息 传 递 延 迟 程 序 480 A.5 Thread Synchronization Programs / 线 程 同 步 程 序 486 A.6 Process Synchronization Programs / 进 程 同 步 程 序 497 Appendix B. A Threads Primer 501 B.1 Introduction / 概 述 501 B.2 Basic Thread Functions: Creation and Termination / 基 本 线 程 函 数 : 创 建 和 终 止 502 Appendix C. Miscellaneous Source Code / 其 他 源 代 码 505 C.1 unpipc.h Header / unpipc.h 头 文 件 505 C.2 config.h Header / config.h 头 文 件 509 C.3 Standard Error Functions / 标 准 错 误 处 理 函 数 510 Appendix D. Solutions to Selected Exercises / 精 选 习 题 答 案 515 Bibliography / 参 考 文 献 535