Linux进程间通信(1)——管道

272 阅读1分钟

Linux中的管道分两种类型,匿名管道和有名管道


匿名管道

匿名管道其实我们经常在用

tail -f zookeeper.out |grep 'dnmd'


代码中的“|”其实就是匿名管道,可以看到tail和grep命令各是一个进程,而两个进程有共同的父进程


匿名管道只能用在亲子和兄弟进程之间


有名管道

执行命令

mkfifo pipe

创建有名管道pipe


 p 类型表示这是一个管道文件。

因为有了这个管道文件,系统中就有了一个管道的全局名称,任何两个不相关的进程都可以通过这个管道文件进行通信。

执行命令

echo "hello" > pipe

会阻塞。因为管道另一端没有人读。此时如果有进程读这个管道,那么这个写操作的阻塞才会解除

再打开一个窗口

tail -f pipe

阻塞即可解除