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

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

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

$ 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

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

答案1

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

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

答案2

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

摘自维基百科文章

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

例子

建立一个先进先出:

$ pwd
/home/saml

$ mkfifo pipe21

检查 FIFO 设备:

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

$ file pipe21 
pipe21: fifo (named pipe)

删除设备:

$ rm pipe21 

$ ls -l | grep pipe

参考

相关内容