首页 > 解决方案 > 为什么 open("file", "w") 不阻塞?

问题描述

我在使用 NTFS 的 Windows 上,我有 2 个进程以写入模式(w)打开同一个文件。我很惊讶地看到,两者都成功了。我错过了什么吗?我认为写入模式隐式地在句柄上有一个文件锁,直到文件再次打开(除非以共享写入模式打开)?

过程1:

fp = open("file.txt", "w")
time.sleep(10000)

过程2:

fp = open("file.txt", "w")
time.sleep(10000)

标签: pythonwindowsntfs

解决方案


好吧,您的 open() 函数的实现必须将 FILE_SHARED_WRITE 传递给内核。否则,其中一个调用将返回错误,而不是阻塞。


推荐阅读