Linux 命令速查
文件管理 man mkfifo

mkfifo

创建命名管道(FIFO)

返回

补充说明

mkfifo 是 coreutils 提供的命令,用于创建命名管道文件。命名管道在文件系统中有一个路径,但数据只存在于内核缓冲区,读写双方必须同时打开才能通信,常用于 shell 脚本中的进程间通信。

默认权限受 umask 影响,可用 -m 指定(如 -m 600)。向没有读端的 FIFO 写入会阻塞,直到有进程打开读取;反之亦然。

FIFO 不占磁盘空间,重启后仍存在(除非位于 tmpfs 上)。删除用 rm,不影响已经打开它的进程。

语法

mkfifo [选项] 名称...

选项

  • -m, --mode <模式>:设置权限,如 600、u=rw,g=r
  • -Z:设置 SELinux 安全上下文
  • --help:显示帮助
  • --version:显示版本

实例

# 创建一个命名管道
mkfifo /tmp/myfifo

# 指定权限
mkfifo -m 600 /tmp/private.fifo

# 一个终端写入(会阻塞直到有人读)
echo "hello" > /tmp/myfifo

# 另一个终端读取
cat /tmp/myfifo

# 通过 FIFO 传输 tar 流
mkfifo /tmp/backup.fifo
tar cf - /data > /tmp/backup.fifo &
ssh host 'cat > backup.tar' < /tmp/backup.fifo

参考链接