python - 确保我的程序没有执行并发文件写入

标签 python unix file-io operating-system ubuntu-12.04

我正在编写一个脚本,该脚本需要对任何给定文件执行安全写入,即如果没有其他进程写入该文件,则附加一个文件。我对该理论的理解是,使用文件系统上的写锁可以防止并发写入,但在实践中似乎并非如此。

以下是我设置测试用例的方式: 我正在重定向 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/

相关文章:

python - 在 alpine docker 容器中安装 psycopg2

c - Unix 域套接字 (AF_UNIX) 中数据报队列长度的默认大小是多少?它是可配置的吗?

Java 程序不接受管道输入

C:编辑二进制文件

java - 在 Java 中创建一个充满随机整数的文本文件

c - 如何从预读()中释放内存?

python - 在 tensorflow 中扩展维度并复制数据

python - 捕获 asyncore 类中的异常

bash - 奇怪的管道缓冲

python - 我什么时候应该(不)想在我的代码中使用 pandas apply() ?