Linux mkfifo初学者命令教程(带示例)

如果你是一个适度的Linux命令行用户,你必须知道管道,这是一个基本的命令行功能,允许进程进行通信。

Linux mkfifo初学者命令教程(带示例)

如果你甚至是一个温和的Linux命令行用户,你必须知道管道,这是一个允许进程进行通信的基本命令行功能。 然后有一个命名管道的概念(是的,有名字的管道,所以你可以用管道做更多的事情)。 使用mkfifo命令可以创建这样的命名管道。

在本教程中,我们将使用一些易于理解的示例来讨论mkfifo的基础知识。 但在这之前,值得一提的是这里的所有例子都已经在Ubuntu 16.04 LTS上测试过了。

Linux mkfifo命令

mkfifo命令基本上可以让你创建FIFO(又名命名管道)。 以下是该命令的语法:

mkfifo [OPTION]... NAME...

下面是该工具的手册页如何解释它:

Create named pipes (FIFOs) with the given NAMEs.

以下是一些问答样式的例子,应该给你一个关于mkfifo如何工作的好主意。

Q1。 什么是命名管道?

要理解这一点,你应该首先意识到基本管道的概念。 你会看到包含竖线(|)的命令。 这个栏被称为管道。 它所做的是创建两个进程之间的通信通道(执行完整命令时)。

例如:

ls | grep .txt

上面提到的命令由两个程序组成: lsgrep 。 这两个程序都由管道(|)分开。 所以这里的管道是什么,它创建了这些程序之间的通信通道 - 当执行上述命令时,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命令可以证明对您非常有用。 一旦您完成了我们在此讨论的基本用法,您可以通过前往其手册页来了解有关该工具的更多信息。