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
上面提到的命令由两个程序组成: ls和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命令可以证明对您非常有用。 一旦您完成了我们在此讨论的基本用法,您可以通过前往其手册页来了解有关该工具的更多信息。