据我了解,命名管道不会写入磁盘,而是存储在内存中。这是我创建命名管道的方式 -
$ 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)