linux文件句柄的作用,如果指向的文件被移动,那么Linux上的打开文件句柄会发生什么...

如果指向文件同时获得Linux上的打开文件句柄会发生什么:

>搬走了 – >文件句柄是否保持有效?

>已删除 – >这会导致EBADF,表明文件句柄无效吗?

>替换为新文件 – >文件句柄是否指向此新文件?

>替换为新文件的硬链接 – >我的文件是否处理“关注”此链接?

>替换为新文件的软链接 – >我的文件句柄现在是否会点击此软链接文件?

为什么我问这样的问题:我使用的是热插拔硬件(如USB设备等).可能发生的是,设备(及其/ dev /文件)被用户或另一个Gremlin重新附加.

处理这个问题的最佳做法是什么?

解决方法:

如果文件被移动(在相同的文件系统中)或重命名,则文件句柄保持打开状态,仍可用于读取和写入文件.

如果文件被删除,文件句柄仍然是打开的,仍然可以使用(这不是一些人所期望的).在最后一个句柄关闭之前,不会真正删除该文件.

如果文件被新文件替换,则具体取决于文件.如果文件的内容被覆盖,文件句柄仍然有效并访问新内容.如果现有文件是未链接的,并且使用相同的名称创建了新文件,或者如果使用rename()将新文件移动到现有文件上,则它与删除相同(参见上文) – 也就是说,文件句柄将继续引用文件的原始版本.

通常,一旦文件打开,文件就会打开,没有人改变目录结构可以改变它 – 它们可以移动,重命名文件,或者在其位置放置其他东西,它只是保持打开状态.

在Unix中没有删除,只有unlink(),这有意义,因为它不一定删除文件 – 只是从目录中删除链接.

另一方面,如果底层设备消失(例如USB拔出),则文件句柄将不再有效,并且可能在任何操作上给出IO /错误.你仍然需要关闭它.即使设备已重新插入,情况仍然如此,因为在这种情况下保持文件打开是不明智的.

标签:systems-programming,linux,file,file-io,linux-kernel

来源: https://codeday.me/bug/20190915/1805423.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值