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/

Reply via email to