gpt4 book ai didi

c++ - 避免同时写入 NFS 共享文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:54 24 4
gpt4 key购买 nike

我正在用 C++ 编写一个模块,它将在一组机器上运行,所有这些机器都有一个 nfs 挂载文件存储。

我有一个通过 NFS 与所有机器共享的配置文件;并且所有人都可以读/写该文件。如何确保不会因同时访问而导致数据损坏?

我知道 NFS 有自己的锁定协议(protocol),但我认为它不可靠 - concurrent nfs access .我还看到 iNotify 在 nfs 安装的驱动器上表现不佳 - inotifiy example .我不确定 stat将有助于在写入/读取之前检查文件是否正在被访问。

如何在 C++ 中实现简单的锁定机制以避免同时访问?

最佳答案

当您同时将内容 A、B 和 C 写入通过 NFS 共享的文件时,最终内容将是 A B C 或 A B C 的任何此类可能组合,如 B A C、C A B 等。文件将始终保持一致,它永远不会先写 A,然后再写 B。因此一个接一个地写。请注意,只有当内容大小在 NFS block 大小范围内时,这才会成立。

如果您的写入超过 block 大小,则需要使用 NLM,这需要在 NFS 服务器和客户端上运行锁定守护进程。

关于c++ - 避免同时写入 NFS 共享文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com