Python 为什么open(“file”和“w”)不阻塞?
我在Windows上使用NTFS,有两个进程以写模式(Python 为什么open(“file”和“w”)不阻塞?,python,windows,ntfs,Python,Windows,Ntfs,我在Windows上使用NTFS,有两个进程以写模式(w)打开同一个文件。我惊讶地看到,他们都成功了。我错过什么了吗?我认为写模式隐式地在句柄上有一个文件锁,直到文件再次打开(除非以共享写模式打开)为止 过程1: fp = open("file.txt", "w") time.sleep(10000) 过程2: fp = open("file.txt", "w") time.sleep(10000) 好的,ope
w
)打开同一个文件。我惊讶地看到,他们都成功了。我错过什么了吗?我认为写模式隐式地在句柄上有一个文件锁,直到文件再次打开(除非以共享写模式打开)为止
过程1:
fp = open("file.txt", "w")
time.sleep(10000)
过程2:
fp = open("file.txt", "w")
time.sleep(10000)
好的,open()函数的实现必须将文件\u SHARED\u WRITE传递给内核。否则,其中一个调用将返回一个错误,而不是阻塞。为什么要假定一个隐式文件锁?也许它是您熟悉的另一种语言固有的。这里没有这样的运气,sorry@roganjosh我怀疑这是语言特定的,而不是依赖于内核实现,但是是的。我从未见过这样的锁被实现。可能是因为两个进程都没有试图写入文件。哇,多年来人们一直认为文件句柄是如何工作的。在我的例子中,我甚至试着在一个循环中编写文件,但两个循环都会通过,但只有一个真正在文件中结束,另一个没有结束