[Python-ideas] Implementation of shutil.move
masklinn at masklinn.net
Fri Aug 12 18:37:40 CEST 2011
On 2011-08-12, at 17:03 , Christian Heimes wrote:
> Am 12.08.2011 16:55, schrieb Masklinn:
>> On 2011-08-12, at 16:48 , David Townshend wrote:
>>> My understanding of os.O_EXCL is that it locks the file from changes by any
>>> other process.
>> That, *could* be O_EXLOCK, but I'm not too sure.
>> O_EXCL does not do anything in and of itself, it fails the file opening if combined with O_CREAT. That's it (from man 2 open):
>> O_EXCL error if O_CREAT and the file exists
> The man page open(2) doesn't mention O_EXLOCK. It must belong to another
> low level function.
Nope, got it from open(2), but it's apparently a bsd extension: http://lkml.indiana.edu/hypermail/linux/kernel/0005.1/1288.html
This information (that it's an extension) is present in the OpenBSD open(2) page, but I checked it on an OSX machine where it's not specified. Sorry.
It's an atomic `flock(fd, LOCK_EX)` (or LOCK_SH) built into open(2) to avoid the unlocked open hole between the open(2) and flock(2) calls.
More information about the Python-ideas