13.1 什么是管道

当从一个进程连接数据流到另一个进程时,我们使用术语管道(pipe)。我们通常是把一个进程的输出通过管道连接到另一个进程的输入。

大多数Linux的用户应该早已对将shell命令连接在一起的概念很熟悉了,这实际上就是把一个进程的输出直接传递给另一个进程的输入。对于shell命令来说,命令的连接是通过管道字符来完成的,如下所示:

13.1 什么是管道 - 图1

shell负责安排两个命令的标准输入和标准输出。

❑ cmd1的标准输入来自终端键盘。

❑ cmd1的标准输出传递给cmd2,作为它的标准输入。

❑ cmd2的标准输出连接到终端屏幕。

shell所做的工作实际上是对标准输入和标准输出流进行了重新连接,使数据流从键盘输入通过两个命令最终输出到屏幕上,见图13-1。

13.1 什么是管道 - 图2

图 13-1

在本章中,我们将看到如何在程序中获得这样的效果,怎样用管道将多个进程连接起来,从而实现一个简单的客户/服务器系统。