Gil*_*tes 12 linux filesystems io concurrency transactions
我正在为Linux编写一个软件,它可以在后台与其他我无法控制的应用程序同时处理用户文件.我想让我的后台应用程序不会覆盖其他应用程序所做的更改.但是有一个问题 - 不像Windows Linux不提供强制文件锁定功能,这可能会因为我想避免的竞争条件而破坏用户的工作.
所以我想知道 - Linux上是否有可用的文件系统提供某种同步机制,例如比较和交换操作,全有或全无交易,强制文件锁定(如在Windows中)?
我相信有三种可能的解决方案
1)使所有程序使用自定义文件I/O库来实现您需要的功能.如果您无权访问源代码,则此解决方案可能不可行.您还可以考虑使用mmap,以便将更改写入内存.您使用后台进程将脏页面与现有或新文件同步.
2)替换受影响程序将使用的标准C/C++库(例如libc.so).您可以使用ldd查找库依赖项.您需要更新标准C/C++的源代码才能实现所需的功能.对大多数人来说这可能太难了.
3)创建您的文件系统.您可以参考互联网上的许多文章,例如https://kukuruku.co/post/writing-a-file-system-in-linux-kernel/.这是最好,最干净的解决方案.
希望能帮助到你.