管道是Linux的十种文件类型之一,使用管道通信本质上还是以文件作为通信的媒介
有名管道+无名管道=管道
有名管道(FIFO文件):就是 有文件名的管道, 可以用于任意两个进程间的通信
无名管道(pipe文件):就是没有文件名的管道, 只能用于父子进程之间的通信
mkfifo
$mkfifo a.pipe
$ls -l
prw-rw-r-- 1 jiang jiang 0 10月 7 08:47 pipe|
创建有名管道,管道不能执行,不可写入, 就像吸管,一边堵死, 另外一头也传不进,就在管口堵着, 还是一个非常短,短到不能存储一丁点饮料的吸管只有读端打开的时候写端的数据才能通过管道抵达目的地, 管道本身可不会存放任何数据
在terminal_1:
$echo hello > pipe #打开管道的写端
#卡在那, 因为读端没有打开, 就像咬紧吸管不抽气, 饮料就进不到吸管
在terminal_2:
$cat pipe #打开管道的读端
hello #读端打开了, 管道就通了, 实现了在两个terminal(两个进程)之间的通信
回到terminal_1
$echo hello > pipe #打开管道的写端
$ #数据被传出了, terminal_1就结束卡顿了