以Linux下的为例吧,管道是一种进程间通信的方式,在linux中分为有名管道和无名管道。有名管道就是把一个进程的输出写到一个文件中,再把此文件作为另一个进程的输入。
无名管道也是如此,只不过这个管道文件不直接可见而已,通常无名管道都作为一个进程组的形式完成,如ls | grep 'a',这就是一种进程间单向的通信方式。
更详细的建议看一下《Understanding Linux Kernel》第三版中进程通信的那章。
在Linux中管道就是一个特殊文件,可以进行读写操作。通常用来在多进程间通信。在shell中,一个命令的输出可以直接通过管道传给下一个命令,其背后的原理就是在读写管道文件。
比如:
cat data.txt | sort | uniq
通过管道把这3条命令连在一起,前一个命令的输出作为后一命令的输入。