mkfifo

管道是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就结束卡顿了

你可能感兴趣的:(mkfifo)