只是想知道共享内存的密钥是文件名还是inode。
我有一个名为.last的文件,它只是一个名为YYYYMMDDHHMMSS的文件的硬链接。
目录如下所示:
20110101143000
.last
.last只是20110101143000的硬链接。
一段时间后,会创建一个新文件
20110101143000
20110622083000
.last
然后删除.last,并重新创建它以引用新文件。
我们的软件在这些更新期间不断运行,使用MAP_SHARED mmaps .last文件。完成文件后,软件可能会将其缓存几分钟而不是取消映射。在物理服务器上,有12-24个软件实例同时运行。不同的实例通常会在同一时间映射同一个文件。我的问题是:
linux是否使用文件名键入共享内存,还是使用inode? strong>
鉴于这种情况:
如果linux使用了inode,那么proc A和B会看到映射到不同文件的不同内存块,这就是我们想要的。如果linux使用文件名,则A和B都会看到映射到新文件的同一块内存。 B很好,但是当分片块中的内存发生变化时,A会崩溃。
任何人都知道它实际上是如何运作的?我要去测试,但如果事实证明是基于名字,我会被搞砸,除非有人知道诡计。
谢谢!
答案 0 :(得分:3)
这是inode,至少是有效的。也就是说,一旦您从文件中映射了一些页面,它们将继续引用该文件,并且不会因为文件系统中名称到文件的映射发生变化而改变。