为什么 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 一个错误,而不是阻塞。
我正在 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 一个错误,而不是阻塞。