UNIX高级进程间通信:流管道与命名管道详解

需积分: 0 6 下载量 110 浏览量 更新于2024-12-21 收藏 1.28MB PDF 举报
本章节深入探讨了UNIX高级进程间通信(IPC)的概念,这些高级IPC方法超越了传统的管道(pipe)、FIFO(命名管道)、消息队列、信号量和共享存储,如流管道和命名流管道。流管道是一种特殊的双向(全双工)管道,使得数据可以从父进程流向子进程,同时也能反向传输,这使得进程间的通信更加灵活高效。与单向的管道不同,流管道允许两端进行双向数据交换。 在4.2BSD和SVR3.2操作系统中,这些高级形式的IPC已被引入,但它们的应用并不广泛,且相关的参考资料相对较少。作者引用了Pressotto和Ritchie在1990年的论文作为灵感来源,表明这些技术在理论上有很高的价值。 程序15-1展示了如何使用流管道来驱动一个名为`add2`的协作进程,这里的主要改动是引入了一个名为`s_pipe`的新函数,用于创建并管理流管道。这个函数在设计上类似于标准的`pipe`函数,但返回的描述符被设置为读写模式,以便父进程和子进程能够同时进行读写操作。 在SVR4版本中,创建流管道的过程简化了,通过调用标准的全双工管道函数即可完成。然而,在较早的系统版本,如SVR3.2,创建流管道可能需要更多的复杂步骤,具体细节可能需要查阅相关文档。 这一章不仅介绍了高级IPC技术的基本概念,还提供了实际操作的示例,帮助读者理解如何在实际开发中利用这些机制增强进程间的通信能力。尽管它们在某些系统中并未成为主流,但理解它们的原理和应用对于精通UNIX系统编程至关重要。