【发布时间】:2015-05-24 16:38:03
【问题描述】:
我有一个必须始终存在于文件系统上的硬链接。硬链接点的 inode 不是恒定的。我想在不向目录添加临时条目的情况下更新硬链接。
(可以使用带有 temp 标志的 open(2) 来创建没有目录条目的文件。)
我面临的问题是替换/更新硬链接。从相关系统调用的文档来看,我似乎只有两个选择,而且都没有避免临时文件:
使用
renameat,可以确保硬链接始终存在。但是,它必须消耗一个硬链接,因此需要一个临时文件(更不用说它无法取消引用符号链接)。使用
linkat,可以在不牺牲另一个文件的情况下生成硬链接。但它不能覆盖现有文件;要求删除原始硬链接。
是否有可能创建一个指向 inode 的链接来替换具有相同名称的旧链接?
【问题讨论】:
-
你想改变什么,只是链接的name,或者它所在的(inode->)文件的实际contents链接到?
-
我希望文件(目录项)指向不同的 inode。
标签: c linux system-calls inode