为什么系统重启后命名管道没有被删除?

Cod*_*lue 5 pipe fifo

据我了解,命名管道不会写入磁盘,而是存储在内存中。这是我创建命名管道的方式 -

$ mkfifo pipe21
$ grep "simple" SimpleDoc.txt > pipe21 &
[1] 2775
$ cat pipe21
Very simple doc that contains plaintext. 
[1]+  Done                    grep --color=auto "simple" SimpleDoc.txt > pipe21
Run Code Online (Sandbox Code Playgroud)

在此之后,我重新启动了我的系统。但是,即使在重新启动后,我在当前目录中也看到了 pipe21。这是为什么?

Gil*_*il' 12

命名管道是文件系统的一部分。任何有文件名的东西都是文件系统的一部分。如果这恰好是持久存储(即磁盘上)中的文件系统,那么它在系统重新启动后仍然存在。

命名管道的文件系统条目只有一个名称、通常的元数据(时间、权限等)和一个表示“这是一个命名管道”的标志。通过管道的数据不会进入文件系统。但是命名管道本身在文件系统中。


slm*_*slm 10

不,它们被写入磁盘。该命令mkfifo pipe21在您的文件系统上创建相应的设备。通常,这些设备保存在/dev命名管道(又名 FIFOS)下,但不一定必须保存在此目录中。

维基百科文章摘录

命名管道可以像任何文件一样被删除:
$ rm my_pipe

例子

做一个先进先出:

$ pwd
/home/saml

$ mkfifo pipe21
Run Code Online (Sandbox Code Playgroud)

查看FIFO设备:

$ ls -l | grep pipe
prw-rw-r--   1 saml saml        0 Jul 24 12:22 pipe21

$ file pipe21 
pipe21: fifo (named pipe)
Run Code Online (Sandbox Code Playgroud)

删除设备:

$ rm pipe21 

$ ls -l | grep pipe
Run Code Online (Sandbox Code Playgroud)

参考