fcntl.lockf() 是如何锁定文件的?

3 投票
1 回答
2545 浏览
提问于 2025-04-18 03:19

我现在正在尝试通过Python锁定一个文件,这样其他进程就连读取它的权限都没有。

到目前为止,我在Python解释器中测试了fcntl.lockf()的行为:

>>> file = open("/path/to/file", "w")
>>> fcntl.lockf(file.fileno(), fcntl.LOCK_EX | fcntl_LOCK_READ)

我试过这个和其他几种不同的fcntl.lockf的用法,但我还是能第二次打开这个文件,并且获取到它的文件描述符(fd)。我还能够读取和写入这个文件。

我是不是漏掉了什么,还是说这个方法根本就不能锁定文件,让其他进程无法访问?有没有其他的方法可以做到这一点?

1 个回答

1

这是一种建议性的锁,只有那些愿意合作的进程会受到影响。想了解如何设置强制锁,可以看看这个讨论

撰写回答