On Wed, May 29, 2019 at 10:07:38PM +0700, Tom Hale wrote:
If
somebody can create a file named link_name between unlink and
symlink, he can also remove and create a file named link_name after
symlink.
I tbink there are some corner cases that can give different results
if the symlink is not atomic.
For example:
Process A wants to symlink f1 --> f2, replacing any existing f1.
Process B wants to create f1 if it doesn't already exist, or update
it if it does. If f1 is a symlink, the file it's linked to should
be updated.
The end result should be that f1 exists and is a symlink to f2.
If the symlink is not atomic, this can happen:
1. Process A sees that f1 already exists and deletes it.
2. Process B sees that f1 does not exist and creates a new file
called f1.
3. Process A tries to symlink f1 to f2, which fails because there
is now an existing file called f1.
This violates the postcondition, because f1 is not a symlink
to f2.
--
Greg
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/