
私が理解したところ、名前付きパイプはディスクに書き込まれるのではなく、メモリに保存されます。これが名前付きパイプを作成する方法です。
$ 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
その後、システムを再起動しました。ただし、再起動後も現在のディレクトリにパイプライン21が表示されます。なぜそんなことですか?
答え1
名前付きパイプはファイルシステムの一部です。ファイル名を持つすべてのエントリはファイルシステムの一部です。これが永続ストレージ(ディスクなど)のファイルシステムの場合は、システムの再起動後も維持されます。
名前付きパイプのファイルシステムエントリには、名前、一般的なメタデータ(時間、権限など)、および「これは名前付きパイプです」というフラグのみがあります。パイプを通過するデータはファイルシステムに入力されません。ただし、名前付きパイプ自体はファイルシステムにあります。
答え2
いいえ、ディスクに書き込まれます。このコマンドはmkfifo pipe21
ファイルシステムに対応するデバイスを生成します。通常、これらのデバイスはこのディレクトリに保存されますが、名前付き/dev
パイプ(FIFOSとも呼ばれます)を必ずこのディレクトリに保存する必要はありません。
Wikipediaの記事から抜粋
名前付きパイプは他のファイルと同様に削除できます。
$ 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