我有一个这样的C程序创建的名为fifo的代码:
res = mkfifo("/home/myfolder/myfifo", 0666);
在那之后,只有读写操作。
现在,从这个答案开始:命名管道会改变文件系统吗?我得出结论,该系统实际上永远不应该实际写入文件系统上的实际文件,并且所有内容都在RAM中处理。
每当我重新启动程序时,“ mkfifo”行都会返回“文件已存在”错误,这是可以的。
令我困扰的是,当我“ ls”文件时,“上次修改日期时间”有时会更改。如果系统从未真正写入文件,它是否应该保持不变?
通过管道传递的数据不会写入文件系统,也不会从文件系统读取数据。创建命名管道时,会分配一个inode,以便可以从创建它的目录中将其链接到;因此,这是“修改文件系统”的一种形式。
访问命名管道将更新索引节点的访问时间,写入命名管道将更新索引节点的修改时间,因此也可以通过间接方式修改文件系统。这并不意味着数据已写入文件系统;而是将数据写入文件系统。这就是Linux处理写入命名管道的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句