# 08.15 Unix管道编程

根据`Unix`原理，`Unix`命令行实用程序应该仅且仅执行一个任务！在实践中，这意味着，与其开发执行大量任务的大型实用程序，不如开发多个较小的程序，这些程序组合在一起执行所需的工作。两个或多个`Unix`命令行实用程序通信的最常见方式是使用管道。在`Unix`管道中，一个命令行实用程序的输出是另一个命令行实用程序的输入。此过程可能涉及两个以上的程序！`Unix`管道的标识是字符`|`。

管道有两个严重的限制：第一，它们通常是单向通信；第二，它们只能在具有相同祖先的进程之间使用。`Unix`管道实现背后的理念是，如果没有要处理的文件，那么应该等待从标准输入中获取输入。同样，如果不要求将输出保存到文件中，则应将输出写入标准输出，以便用户查看或由其他程序处理。

在第一节`Go与操作系统`中，你学习了如何从标准输入中读取，以及如何写入到标准输出。如果你对这两个操作仍有疑问，最好花点时间复习下代码`stdOUT.go`和`stdIN.go`。
