令我惊讶的是,突然在我(以usr1身份)拥有的配置文件和我在OS守护程序中创建的临时文件(每个5分钟)之间创建了一个硬链接,以便从原始配置文件复制。
在复制回原始文件后,我在C中使用rename(*file2,*file1);,这会终止对config.txt.tmp的任何跟踪
该目录是mnt /sram驱动器上的根用户,任何人都没有对嵌入式计算机的根用户访问权限。存储介质是嵌入式Linux 2.6.10上的NAND闪存SRAM
ls -l展示
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年,最近只有一台机器遇到了这个问题。
发布于 2012-07-18 08:18:42
通过执行以下操作检查文件是否实际上是硬链接
ls -i以显示inode。
我的头顶:
在移动之前,
Think - unionfs
- aufs
- ...?
编辑
:从你的文章中,我得到的印象是你可能在做相反的事情:我希望你写一个.tmp副本,一旦一切都被刷新和同步,‘原子地’(好吧,为文件系统支持和排序模式祈祷),将它重命名为适当的位置。(我现在只是在猜测,因为大部分图片都太模糊了,无法真正继续)
https://stackoverflow.com/questions/11532362
复制相似问题