Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1741630
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 系统运维

2012-04-02 16:38:41

进程间通信(Interprocess Communication)


在第8章,我们描述过进程控制原始例程,并看过如何调用多个进程。但是这些进程交换信息的唯一方法是通过在fork或exec时传递打开的文件或通过文件系统。我们现在将描述其它让进程与对方通信的技术:IPC,与就是进程间通信。

在过去,UNIX系统IPC是各种方法的大杂烩,其中几乎没有可以在所有UNIX系统实现上移植的。通过POSX和The Open Group(X/Open的前身)标准化的努力,状态得到改善,但是区别仍然存在。下表总结了由本文讨论的四个实现IPC的各种形式,

UNIX系统IPC汇总
IPC 类型SUSFree BSD 5.2.1Linux 2.4.22Mac OS X 10.3Solaris 9
半双工(half-duplex)管道*(全双工)**(全双工)
FIFO*****
全双工管道允许*、UDS可选、UDSUDS*、UDS
命名全双工管道XSI 可选项UDS可选、UDSUDS*、UDS
消息队列XSI**
*
信号量XSI****
共享内存XSI****
套接字*****
STREAMSXSI
可选
*
注意SUS允许一个实现支持全双工管道,但是只要求半双工管道。一个支持全双工的实现将仍可以正确地为假定底下操作系统只支持半双工管道的应用工作。我们使用“(全双工)”而不是着重号来展示用全双工管道来支持半双工管道的实现。

在上表,我们在基于功能被支持时显示一个着重号。对于全双工管道,如果特性通过UNIX域套接字(17.3节)支持, 我们在列里展示“UDS”。一些实现用管道和UNIX域套接字支持这个特性,所以这些项同时有着重号和“UDS”。

正 如在14.4节里提过的,STREAMS的支持在SUS里可选的。命名全双工管道作为挂载的基于STREAMS的管道被支持,也是SUS的可选项。在 Linux上,STREAMS的支持在一个独立可选的名为“Lis”(Linux STREAMS)的包里支持。我们在平台通过一个可选包提供特性的支持的地方显示“可选”--通常默认是不安装的。

上表的前7种形式的IPC通常局限于同一主机上的进程间的IPC。最后两行--套接字和STREAMS--是仅有的两个支持不同主机上进程间的IPC。

我们把IPC的讨论分为三章。在本章,我们检查经典的IPC:管道、FIFO、消息队列、信号量、和共享内存。在下一章,我们看下使用套接字机制的网络IPC。在17章,我们看下IPC的一些高级特性。


阅读(880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~