shell脚本中命名管道

shell脚本中命名管道

管道是进程间通信的一种方式,使用|符号就是创建了一个匿名管道,但匿名管道只能实现父进程与子进程之间的通信。要实现任意两个进程之间的通信,需要使用命名管道,命名管道也叫FIFO文件

命名管道特征
  1. FIFO文件创建后在文件系统中可以直接看到
  2. 写入FIFO文件中的数据一旦被读取后,就不可以重复读取
  3. 进程往FIFO文件中写数据时,如果没有其他进程读取数据,则写数据的进程会被阻塞,直到有其他进程读取数据
  4. 进程从FIFO文件中读数据时,如果FIFO文件中没有数据,则读数据的进程会被阻塞,直到FIFO文件中被写入数据
  5. FIFO文件中的数据写在内存中,并不写入磁盘,读写效率更高
创建命名管道(FIFO文件)

使用mkfifo命令或mknod命令创建FIFO文件

[root@mao_aliyunserver bin]# ll
total 4
-rw-r--r-- 1 root root 604 Feb 11 20:39 test.sh
[root@mao_aliyunserver bin]# mkfifo fifo_file.txt
[root@mao_aliyunserver bin]# ll
total 4
prw-r--r-- 1 root root   0 Feb 11 22:06 fifo_file.txt
-rw-r--r-- 1 root root 604 Feb 11 20:39 test.sh

创建命名管道