16 lines
817 B
Plaintext
16 lines
817 B
Plaintext
It uses a temporary file in the same directory as the given path. This ensures
|
||
that the temporary file resides on the same filesystem.
|
||
|
||
The temporary file will then be atomically moved to the target location: On
|
||
POSIX, it will use rename if files should be overwritten, otherwise a
|
||
combination of link and unlink. On Windows, it uses MoveFileEx through
|
||
stdlib’s ctypes with the appropriate flags.
|
||
|
||
Note that with link and unlink, there’s a timewindow where the file might be
|
||
available under two entries in the filesystem: The name of the temporary file,
|
||
and the name of the target file.
|
||
|
||
Also note that the permissions of the target file may change this way. In some
|
||
situations a chmod can be issued without any concurrency problems, but since
|
||
that is not always the case, this library doesn’t do it by itself.
|