Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么open(“file”和“w”)不阻塞?_Python_Windows_Ntfs - Fatal编程技术网

Python 为什么open(“file”和“w”)不阻塞?

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

我在Windows上使用NTFS,有两个进程以写模式(
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我怀疑这是语言特定的,而不是依赖于内核实现,但是是的。我从未见过这样的锁被实现。可能是因为两个进程都没有试图写入文件。哇,多年来人们一直认为文件句柄是如何工作的。在我的例子中,我甚至试着在一个循环中编写文件,但两个循环都会通过,但只有一个真正在文件中结束,另一个没有结束