首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAND闪存上突然创建的硬链接

NAND闪存上突然创建的硬链接
EN

Stack Overflow用户
提问于 2012-07-18 07:38:21
回答 1查看 125关注 0票数 1

令我惊讶的是,突然在我(以usr1身份)拥有的配置文件和我在OS守护程序中创建的临时文件(每个5分钟)之间创建了一个硬链接,以便从原始配置文件复制。

在复制回原始文件后,我在C中使用rename(*file2,*file1);,这会终止对config.txt.tmp的任何跟踪

该目录是mnt /sram驱动器上的根用户,任何人都没有对嵌入式计算机的根用户访问权限。存储介质是嵌入式Linux 2.6.10上的NAND闪存SRAM

ls -l展示

代码语言:javascript
复制
2 config.txt       699byte date_modify  
2 config.txt.tmp   699byte date_modify

应该创建config.txt.tmp,从config.txt复制,将配置参数发送到config.txt,然后在5-7行代码内自动删除

该目录为root所有,无法创建硬链接。

谁能解释一下低级函数中“硬链接”的创建?我可能会面临竞争状况吗?或者它可能是一些用于通过闪存进行存储的内核代码?还是Linux中的bug?

我的代码在100台机器上运行了5年,最近只有一台机器遇到了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-07-18 08:18:42

通过执行以下操作检查文件是否实际上是硬链接

代码语言:javascript
复制
ls -i

以显示inode。

我的头顶:

在移动之前,

  • 文件缓冲区可能已经变脏了?
  • 如果涉及到分叉,那么即使在分叉
  • 是闪存‘覆盖’文件系统驱动程序之前,也可能有脏缓冲区在起作用?也许它已经改变了,并且包含了以前没有的优化

Think - unionfs

- aufs

- ...?

编辑

:从你的文章中,我得到的印象是你可能在做相反的事情:我希望你写一个.tmp副本,一旦一切都被刷新和同步,‘原子地’(好吧,为文件系统支持和排序模式祈祷),将它重命名为适当的位置。(我现在只是在猜测,因为大部分图片都太模糊了,无法真正继续)

另请参阅:Is rename() without fsync() safe?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11532362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档