第 13 章 进程间通信 : 管道
第11章 我们看到进程间发送消息的非常简单的方法 :使用信号。
但是传送的信息只限于一个信号值。
大纲 {
*1 管道的定义
*2 进程管道
*3 管道调用
*4 父进程与子进程
*5 命名管道 : FIFO
*6 客户 / 服务器架构
}
*1, 什么是管道?
当从一个进程连接数据流到另一个进程时,我们使用术语管道(Pipe).
我们通常把一个进程的输出通过管道连接到另一个进程的输入。
cmd1 | cmd2
shell所做的工作实际上是对标准输入和标准输出进行了重新连接,使数据流
从键盘输入通过两个命令最终输出到屏幕。
*2, 进程管道
最简单的在两个程序之间传递数据的方法就是使用popen和pclose函数了。
*4 父进程和子进程
在接下来对pipe调用的研究中,我们将学习如何在一个子进程中运行与其父进程
完全不同的另外一个程序。我们用exec调用来完成这一工作。
管道关闭之后的读操作
*5 命名管道 : FIFO
至此,我们还只能在相关的程序之间传递数据,即这些程序是由一个共同的祖先进程
启动的。但我们想在不相关的进程之间交换数据,可以用FIFO来完成这项工作。
总结 : 这章我们介绍了如何使用管道在进程之间传递数据。首先,通过popen或pipe
调用创建未命名的管道,并且讨论了如何使用管道和dup调用把数据从一个程序传递
到另一个程序的标准输入。介绍:管道在不相关的进程之间传递数据,最后:实现了
一个简单的客户/服务器例子,FIFO的使用不仅向我们提供了进程间的同步,还提供
了双向数据流。