我正在编写一个脚本,该脚本需要对任何给定文件执行安全写入,即如果没有其他进程写入该文件,则附加一个文件。我对该理论的理解是,使用文件系统上的写锁可以防止并发写入,但在实践中似乎并非如此。
以下是我设置测试用例的方式: 我正在重定向 ping 命令的输出:
ping 127.0.0.1 > fileForSafeWrites.txt
在另一端,我有以下 python 代码试图写入文件:
handle = open('fileForSafeWrites.txt', 'w')
handle.write("Probing for opportunity to write")
handle.close()
同时运行两个进程,优雅地完成。我看到 fileForSafeWrites.txt 已经变成了一个包含二进制内容的文件,而不是第一个保护它不被 Python 代码写入的进程发出的写锁。
我如何强制我的一个或两个并发进程不相互干扰?我读过有人建议能够获取写入文件句柄作为文件被安全写入的证据,例如 https://stackoverflow.com/a/3070749/1309045
此行为是否特定于我的操作系统和 Python。我在 Ubuntu 12.04 环境下使用 Python2.7。
最佳答案
关于python - 确保我的程序没有执行并发文件写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126108/