Eryk Sun added the comment:

> Does the unlink() work on Windows?

Yes. O_TEMPORARY opens the file with FILE_SHARE_DELETE, so unlink won't raise 
an error. 

Opening a file creates and returns a handle for a kernel File object that 
references the underlying file/link/stream control block in the file system. 
There may be multiple open File objects from separate NtCreateFile and 
NtOpenFile system calls, but they all reference a common file control block. 
Deleting a file requires a File handle, which is used to set the delete 
disposition in the control block. When all references (handle and pointer) to 
all File objects that reference the file are closed, the file is unlinked if 
the delete disposition is set.

The way delete-on-close works is to set a flag in the File object that causes 
the delete disposition to be automatically set when the File object is closed. 
However, any File handle that references the file can be used to set or unset 
this disposition if it has DELETE access. So it's harmless to manually call 
DeleteFile on the file (i.e. NtOpenFile and NtSetInformationFile to set the 
delete disposition) beforehand.

----------
nosy: +eryksun

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue26385>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to