我的意思是某些进程想要读取符号链接时发生了什么?在读取甚至写入过程中某些东西更改了符号链接时,会发生什么情况?
例如:我有2个巨大的类似100G文件,/mnt/1
并且/mnt/2
。/mnt/1
可通过symlink获得/home/user/file
。某些程序A
开始读取/home/user/file
。一段时间后,链接从更改/mnt/1
为/mnt/2
,但A
仍在读取文件。
程序是否缓存绝对路径?
它会因为符号链接被更改而失败并出错,或者像什么都没发生一样,它会正常工作吗?
如果/home/user/file
链接到块设备(例如2个复制的iscsi磁盘),情况会有所不同吗?
符号链接指向文件系统中实际文件的名称(inode)。当系统解析该符号链接以找到实际文件并打开它时,它将查找并使用文件的索引节点。那时,您用来获取文件的路径无关紧要。操作系统不缓存的内容是它通过其inode从文件中读取的内容。据我了解,您可以开始通过硬链接读取文件并删除该硬链接 (只要文件仍然从其他位置链接) ,并且只要文件已解析就不会引起问题(名称字符串-> inode)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句