Linux中的管道分两种类型,匿名管道和有名管道
匿名管道
匿名管道其实我们经常在用
tail -f zookeeper.out |grep 'dnmd'代码中的“|”其实就是匿名管道,可以看到tail和grep命令各是一个进程,而两个进程有共同的父进程
匿名管道只能用在亲子和兄弟进程之间
有名管道
执行命令
mkfifo pipe创建有名管道pipe
p 类型表示这是一个管道文件。
因为有了这个管道文件,系统中就有了一个管道的全局名称,任何两个不相关的进程都可以通过这个管道文件进行通信。
执行命令
echo "hello" > pipe会阻塞。因为管道另一端没有人读。此时如果有进程读这个管道,那么这个写操作的阻塞才会解除
再打开一个窗口
tail -f pipe阻塞即可解除