名前付きパイプを作成してから読み取り/書き込みを行うと、名前付きパイプが存在するファイルシステムに影響がありますか?つまりデータは読み取られるまでファイルシステムにバッファリングされますか、それともメモリにのみ存在しますか?
ファイルオブジェクト自体はファイルシステムに作成されますが、データはファイルシステムに保存されません。 mkpipe(3)のマンページから:
A FIFO special file is similar to a pipe, except that it is created in
a different way. Instead of being an anonymous communications channel,
a FIFO special file is entered into the file system by calling
mkfifo().
データがディスクに保存されるのは、バッファを含むメモリがスワップスペースに書き込まれる休止状態の間だけですが、これはまれなケースです。
いいえ。名前付きパイプへの書き込みは、ファイルシステムを変更しません(アクセス時間を除く)。
これがデモンストレーションです:
$ mkdir test
$ mkdir test-ro
$ mkfifo test/fifo
$ mount --bind test test-ro
$ mount -o remount,ro test-ro
$ cat test/fifo & echo something >> test/fifo
something
ご覧のとおり、FIFOは読み取り専用ファイルシステム上にありましたが、書き込みは可能でした。
名前付きパイプは、パイプされたデータをファイルシステムに保存しません。それらのデータは、ファイルシステムバッファとは別にメモリにバッファリングされます。