首页 > 解决方案 > 如何锁定文件以防止操作系统中其他应用程序的写操作?

问题描述

我有一个文件。我的应用程序必须打开它并保护它免受我操作系统中其他应用程序的写入。

有可能做这样的事情吗?我试过 fcntl.flock() 但似乎这个锁只适用于我的应用程序。文本编辑器等其他程序可以毫无问题地写入文件。

测试示例

#!/usr/bin/env python3

import time
import fcntl

with open('./somefile.txt', 'r') as f:
    # accquire lock
    fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)

    # some long running operation
    # file should be protected from writes
    # of other programs on this computer
    time.sleep(20)

    # release lock
    fcntl.flock(f, fcntl.LOCK_UN)

我如何为系统中的每个应用程序锁定文件,除了我的?

标签: pythonpython-3.xlocking

解决方案


Flock 是建议性锁定,除非特别检查,否则它会被忽略。

还有其他替代方案可以像这样强制锁定。在此线程 中找到,并且那里还有更多替代方案。


推荐阅读