名前付きパイプが変更され続けるのはなぜですか?

名前付きパイプが変更され続けるのはなぜですか?

次のCプログラムで生成された名前付きfifoがあります。

res = mkfifo("/home/myfolder/myfifo", 0666);

その後は読み書きのみです。

今この答えから:名前付きパイプはファイルシステムを変更しますか?私の結論は、システムが実際にファイルシステムの実際のファイルに書き込まれてはならず、すべてがRAMで処理されることです。

プログラムを再起動するたびに、「mkfifo」行に「ファイルがすでに存在しています」というエラーが返されます。これは通常の現象です。
私をいじめるのは、ファイルを「ls」すると、「最後の変更日時」が時々変わるということです。システムが実際にファイルに書き込まない場合は、変更されていないままにしておく必要はありませんか?

ベストアンサー1

パイプを介して渡されたデータは、ファイルシステムに書き込まれたり読み込まれたりしません。名前付きパイプが作成されると、生成されたディレクトリから接続できるように inode が割り当てられるため、これは形式です。ファイルシステムの変更」。

名前付きパイプにアクセスするとinodeのアクセス時間が更新され、名前付きパイプに書き込まれるとinodeの変更時間が更新されるため、ファイルシステムもこの間接的な方法で変更されます。これは、データがファイルシステムに書き込まれるという意味ではなく、データがファイルシステムに書き込まれることを意味します。これは、Linuxが名前付きパイプへの書き込みを処理する方法です。

おすすめ記事