为什么 open("file", "w") 不阻塞?

Why does open("file", "w") not block?

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

进程 1:

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

进程 2:

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

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