shell脚本中命名管道
shell脚本中命名管道
管道是进程间通信的一种方式,使用|符号就是创建了一个匿名管道,但匿名管道只能实现父进程与子进程之间的通信。要实现任意两个进程之间的通信,需要使用命名管道,命名管道也叫FIFO文件
命名管道特征
- FIFO文件创建后在文件系统中可以直接看到
- 写入FIFO文件中的数据一旦被读取后,就不可以重复读取
- 进程往FIFO文件中写数据时,如果没有其他进程读取数据,则写数据的进程会被阻塞,直到有其他进程读取数据
- 进程从FIFO文件中读数据时,如果FIFO文件中没有数据,则读数据的进程会被阻塞,直到FIFO文件中被写入数据
- 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