初学者 Linux mkfifo 命令教程(附示例)
在此页
- Linux mkfifo 命令
- Q1。什么是命名管道?
- Q2。如何识别命名管道?
- Q3。如何设置自定义访问权限?
- 结论
即使你是一个普通的 Linux 命令行用户,你也必须了解管道,这是一个允许进程进行通信的基本命令行功能。然后是命名管道的概念(是的,有名字的管道,这样你就可以用管道做更多的事情)。 mkfifo 命令允许您创建这样的命名管道。
在本教程中,我们将使用一些易于理解的示例来讨论 mkfifo 的基础知识。但在我们这样做之前,值得一提的是这里的所有示例都已经在 Ubuntu 22.04 LTS 上进行了测试。

Linux mkfifo 命令
mkfifo 命令基本上可以让您创建 FIFO(也称为命名管道)。以下是该命令的语法:
mkfifo [OPTION]... NAME...
以下是工具手册页对其的解释:
Create named pipes (FIFOs) with the given NAMEs.
以下是一些 Q&A 风格的示例,应该可以让您对 mkfifo 的工作原理有一个很好的了解。
Q1。什么是命名管道?
要理解这一点,您应该首先了解基本管道的概念。您可能见过其中包含竖线 (|) 的命令。这个酒吧被称为管道。它所做的是,它在两个进程之间创建了一个通信通道(当执行完整的命令时)。
例如:
ls | grep .txt
上面提到的命令由两个程序组成:grep。这两个程序都由竖线 (|) 分隔。所以管道在这里的作用是,它在这些程序之间创建了一个通信通道——当执行上述命令时,ls 的输出作为输入提供给 grep。所以最后,终端上显示的输出仅包含那些包含 .txt 字符串的条目。
所以这是对普通管道的快速复习。现在出现了命名管道的概念。顾名思义,这些是带有名称的管道。您可以使用 mkfifo 命令创建命名管道。例如:
mkfifo pipe2
所以 pipe2 现在是一个命名管道。现在问题来了,命名管道如何更有用?好吧,考虑一下您有一个进程在终端中运行并产生输出的情况,而您想要的是将该输出通道化到另一个终端。所以在这里,命名管道可以提供很大的帮助。
例如,假设 ls 是在第一个终端中运行的进程,而您想在不同的终端中查看它的输出。那么您可以执行以下操作:
ls > pipe2
这是您可以在第二个终端中执行的操作:
cat < pipe2

Q2。如何识别命名管道?
命名管道可以像文件一样被正常访问。所以这意味着您可以使用 ls 命令来访问它们。如果您看到命名管道的访问权限,您会在开头看到一个 p。这表示相关文件是命名管道。这是一个例子:

Q3.如何设置自定义访问权限?
正如您在之前的问答中看到的,命名管道的默认访问权限是 rw、rw 和 r(分别针对用户、组和其他人)。但是,如果需要,您也可以设置自定义权限,您可以使用 -m 选项来实现。
例如:
mkfifo pipe3 -m700
以下屏幕截图确认已设置自定义权限:

要了解有关 mkfifo 的更多信息,您可以使用 --help 和 --version 选项。
结论
因此,根据您在 Linux 命令行上执行的工作类型,mkfifo 命令可能对您非常有用。完成我们在这里讨论的基本用法后,您可以通过前往其手册页了解有关该工具的更多信息。