【发布时间】:2019-02-25 04:30:21
【问题描述】:
我正在为 Linux 编写一个软件,它可以在后台主动处理用户的文件,同时与我无法控制的其他应用程序一起工作。我想让我的后台应用程序不覆盖其他应用程序所做的更改。但是有一个问题 - 与 Windows 不同,Linux 不提供强制文件锁定功能,这可能会由于我想避免的竞争条件而破坏用户的工作。
所以我想知道 - Linux 上是否有提供某种同步机制的文件系统,例如 compare-and-swap 操作、all-or-nothing transactions、强制文件锁定(如在 Windows 中)?
【问题讨论】:
-
您错过了问题陈述。你到底想做什么?
-
@MaximEgorushkin, “我想让它不覆盖用户所做的更改” - 这还不够吗?
-
这个问题陈述有一个简单的解决方案:写入新文件。
-
用户进程可能正在使用缓冲 I/O(例如 stdio 函数),因此用户写入可能在用户空间缓冲区中挂起。但是文件观察者不可能知道这一点。您所说的问题没有解决方案。
标签: linux concurrency io transactions filesystems